>  기사  >  웹 프론트엔드  >  AJAX를 통한 업로드를 위해 파일 인코딩된 base64

AJAX를 통한 업로드를 위해 파일 인코딩된 base64

php中世界最好的语言
php中世界最好的语言원래의
2018-06-08 14:05:442562검색

이번에는 AJAX를 통해 base64로 인코딩된 파일을 업로드할 때 주의 사항에 대해 소개하겠습니다. 다음은 실제 사례입니다.

z AJAX를 사용하여 직접 파일을 업로드하는 것은 불가능합니다. 일반적으로 비동기 파일 업로드 효과를 얻기 위해 양식 제출 프로세스를 완료하는 새로운 iframe이 생성됩니다.

이렇게 하면 브라우저 호환성이 향상될 수 있지만 plupload와 같은 파일 업로드 플러그인을 사용하더라도 코드 양이 상대적으로 커집니다.

어떻게 유연성 수준을 달성할 수 있습니까? 양식 데이터의 일반 AJAX 제출과 마찬가지로 파일을 일반 양식 매개변수로 처리할 수 있다면 좋을 것입니다.

번번 영감이 떠올랐는데, 자바스크립트의 FileReader 객체를 이용해 파일을 base64로 인코딩한 뒤 서버로 전송하면 되지 않을까요~

시작해보시고 음식과 의복도 넉넉히 챙겨가세요.

프런트 엔드 base64는 파일을 인코딩하고 ajax를 통해 서버로 전송합니다:

<head>
  <meta charset="UTF-8">
</head>
<form onsubmit="return false;">
  <input type="hidden" name="file_base64" id="file_base64">
  <input type="file" id="fileup">
  <input type="submit" value="submit" onclick="$.post(&#39;./uploader.php&#39;, $(this).parent().serialize());">
</form>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("#fileup").change(function(){
    var v = $(this).val();
    var reader = new FileReader();
    reader.readAsDataURL(this.files[0]);
    reader.onload = function(e){
      console.log(e.target.result);
      $('#file_base64').val(e.target.result);
    };
  });
});
</script>

백엔드 디코딩 및 파일 데이터 저장:

<?php
if (isset($_POST['file_base64'])){
  $file_base64 = $_POST['file_base64'];
  $file_base64 = preg_replace('/data:.*;base64,/i', '', $file_base64);
  $file_base64 = base64_decode($file_base64);
  file_put_contents('./file.save', $file_base64);
}

Javascript의 FileReader 개체는 IE10 이상의 주류 브라우저에서 지원됩니다. , 작은 것 같아요. 범위 내에서 서비스를 제공할 때, 비동기적으로 파일을 업로드하는 이 방법을 고려할 수 있는데, IE 시리즈와의 호환성은 또 다른 문제입니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

각진 인쇄 페이지 기능 지정

Element-UI 테이블을 사용하여 드래그 앤 드롭 기능 구현

위 내용은 AJAX를 통한 업로드를 위해 파일 인코딩된 base64의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.