목차
FileList 개체 및 파일 개체
Blob 개체
만드는 방법
파일 다운로드
FileReader 개체
이미지 미리보기 업로드
데이터 백업 및 복구
Base64 인코딩
웹 프론트엔드 H5 튜토리얼 H5의 파일 업로드에 대한 자세한 소개

H5의 파일 업로드에 대한 자세한 소개

Jul 17, 2017 am 11:06 AM
h5 html5

FileList 개체 및 파일 개체

HTML의 input[type="file"] 태그에는 사용자가 여러 파일을 선택할 수 있는 다중 속성이 있습니다. FileList 개체는 사용자가 선택한 파일 목록을 나타냅니다. 이 목록의 각 파일은 파일 객체입니다.

파일 개체의 속성:

  • name: 파일 이름, 경로 제외.

  • type : 파일 형식. 이미지 유형의 파일은 모두 image/로 시작하며, 이는 이미지만 업로드하도록 제한하는 데 사용할 수 있습니다.

  • 크기 : 파일 크기. 파일 크기에 따라 추가 작업을 수행할 수 있습니다.

  • lastModified: 파일이 마지막으로 수정된 시간입니다.

<input type="file" id="files" multiple><script>var elem = document.getElementById(&#39;files&#39;);elem.onchange = function (event) {var files = event.target.files;for (var i = 0; i < files.length; i++) {// 文件类型为 image 并且文件大小小于 200kbif(files[i].type.indexOf(&#39;image/&#39;) !== -1 && files[i].size < 204800){console.log(files[i].name);}}}</script>
로그인 후 복사

입력에는 파일 업로드를 통해 제출할 수 있는 파일 형식을 지정하는 데 사용할 수 있는 accept 속성이 있습니다.

accept="image/*"를 사용하면 업로드를 이미지 형식으로만 제한할 수 있습니다. 하지만 웹킷 브라우저에서 응답이 느린 문제가 있었고, 파일 선택 상자가 팝업되기까지 몇 초가 걸렸다.

해결책은 * 와일드카드 문자를 지정된 MIME 유형으로 변경하는 것입니다.

<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png">
로그인 후 복사

Blob 개체

Blob 개체는 컨테이너와 동일하며 이진 데이터를 저장하는 데 사용할 수 있습니다. 여기에는 두 가지 속성이 있는데, size 속성은 바이트 길이를 나타내고, type 속성은 MIME 유형을 나타냅니다.

만드는 방법

Blob 객체는 Blob() 생성자를 사용하여 만들 수 있습니다.

var blob = new Blob([&#39;hello&#39;], {type:"text/plain"});
로그인 후 복사

Blob 생성자의 첫 번째 매개변수는 ArrayBuffer 개체, ArrayBufferView 개체, Blob 개체 및 문자열을 저장할 수 있는 배열입니다.

Blob 객체는 Slice() 메서드를 통해 새 Blob 객체를 반환할 수 있습니다.

var newblob = blob.slice(0,5, {type:"text/plain"});
로그인 후 복사

slice() 메서드는 세 가지 매개 변수를 사용하며 모두 선택 사항입니다. 첫 번째 매개변수는 복사할 Blob 객체 내 바이너리 데이터의 시작 위치를 나타내고, 두 번째 매개변수는 복사본의 끝 위치를 나타내며, 세 번째 매개변수는 Blob 객체의 MIME 유형을 나타냅니다.

canvas.toBlob()은 Blob 객체를 생성할 수도 있습니다. toBlob()은 세 개의 매개변수를 사용합니다. 첫 번째는 콜백 함수, 두 번째는 이미지 유형, 기본값은 image/png, 세 번째는 이미지 품질이며 값은 0에서 1 사이입니다.

var canvas = document.getElementById(&#39;canvas&#39;);canvas.toBlob(function(blob){ console.log(blob); }, "image/jpeg", 0.5);
로그인 후 복사

파일 다운로드

Blod 개체는 window.URL 개체를 통해 네트워크 주소를 생성하고 이를 a 태그의 다운로드 속성과 결합하여 파일 다운로드 기능을 구현할 수 있습니다.

예를 들어 캔버스를 이미지 파일로 다운로드합니다.

var canvas = document.getElementById(&#39;canvas&#39;);canvas.toBlob(function(blob){
// 使用 createObjectURL 生成地址,格式为 blob:null/fd95b806-db11-4f98-b2ce-5eb16b38ba36var url = URL.createObjectURL(blob);var a = document.createElement(&#39;a&#39;);a.download = &#39;canvas&#39;;a.href = url;
// 模拟a标签点击进行下载a.click();
// 下载后告诉浏览器不再需要保持这个文件的引用了URL.revokeObjectURL(url);});
로그인 후 복사

비슷한 방법으로 문자열을 텍스트 파일로 저장할 수도 있습니다.

FileReader 개체

FileReader 개체는 주로 파일을 메모리로 읽어들이고 파일의 데이터를 읽는 데 사용됩니다. 생성자

var reader = new FileReader();
로그인 후 복사

를 통해 FileReader 개체를 만듭니다. 개체에는 다음과 같은 메서드가 있습니다.

  • abort: 읽기 작업을 중단합니다.

  • readAsArrayBuffer: 파일 내용을 ArrayBuffer 개체로 읽어옵니다.

  • readAsBinaryString: 파일을 바이너리 데이터로 읽습니다.

  • readAsDataURL: 파일을 data: URL 형식의 문자열로 읽습니다.

  • readAsText: 파일을 텍스트로 읽습니다.

이미지 미리보기 업로드

일반적인 응용 프로그램은 클라이언트가 이미지를 업로드한 후 readAsDataURL()을 통해 이미지를 표시하는 것입니다.

<input type="file" id="files" accept="image/jpeg,image/jpg,image/png"><img src="blank.gif" id="preview"><script>var elem = document.getElementById(&#39;files&#39;),img = document.getElementById(&#39;preview&#39;);elem.onchange = function () {var files = elem.files,reader = new FileReader();if(files && files[0]){reader.onload = function (ev) {img.src = ev.target.result;}reader.readAsDataURL(files[0]);}}</script>
로그인 후 복사

그런데 일부 휴대폰에서 세로로 사진을 찍을 때 사진을 업로드할 때 버그가 있고, 삼성이나 아이폰을 포함해 사진이 거꾸로 보이는 현상이 발생합니다. . . 여기에서는 솔루션을 설명하지 않습니다. 관심이 있는 경우 모바일 이미지 업로드 회전 및 압축 솔루션

데이터 백업 및 복구

FileReader 개체의 readAsText()를 통해 파일의 텍스트를 읽을 수 있습니다. Blob 객체의 기능을 사용하여 파일을 다운로드하면 데이터 내보내기 파일을 로컬에 백업할 수 있습니다. 데이터를 복원해야 할 경우 입력을 통해 백업 파일을 업로드하고 readAsText()를 사용하여 텍스트를 읽은 후 복원할 수 있습니다. 데이터.

코드는 위 함수와 유사하므로 여기서는 반복하지 않습니다. 특정 응용 프로그램의 경우 notepad

Base64 인코딩

Base64 인코딩을 지원하기 위해 HTML5에 새로운 atob 및 btoa 메서드가 추가되었습니다. 그들의 이름은 또한 인코딩과 디코딩을 나타내는 b에서 a로, a에서 b로 매우 간단합니다.

var a = "lin-xin.github.io";var b = btoa(a);var c = atob(b);console.log(a);     
// https://lin-xin.github.ioconsole.log(b);     
// aHR0cHM6Ly9saW4teGluLmdpdGh1Yi5pbw==console.log(c);     
// https://lin-xin.github.io
로그인 후 복사

btoa 메서드는 a의 값을 변경하지 않고 문자열 a를 인코딩하고 인코딩된 값을 반환합니다.
atob 메소드는 인코딩된 문자열을 디코딩합니다.

하지만 매개변수에 8비트 ASCII 인코딩의 문자 범위를 초과하는 중국어 문자가 포함되어 있어 브라우저에서 오류를 보고합니다. 따라서 중국어는 먼저 encodeURIComponent로 인코딩되어야 합니다.

rreee

위 내용은 H5의 파일 업로드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

See all articles