그런데 오늘은 Proxy SwitchySharp의 소스코드를 대충 훑어봤는데, 이번 글에서 소개할 파일을 읽고 저장하는 것까지 포함해서 많은 것을 배웠습니다.
Google에서는 아직 플러그인 데이터 동기화 기능을 제공하지 않기 때문에 플러그인 구성 가져오기 및 내보내기는 파일을 처리해야 합니다. 보안상의 이유로 IE에서만 파일 액세스용 API를 제공하지만 HTML 5가 출시되면서 다른 브라우저에서도 이를 지원하게 되었습니다.
먼저 파일을 읽어보겠습니다. W3C는 몇 가지 파일 API를 제공하며 그 중 가장 중요한 것은 FileReader 클래스입니다.
먼저 사용해야 하는 HTML 태그를 나열하세요.
FileReader에는 4가지 읽기 방법이 있습니다.
1.readAsArrayBuffer(file): 파일을 ArrayBuffer로 읽습니다.
2.readAsBinaryString(file): 파일을 바이너리 문자열로 읽습니다
3.readAsDataURL(file): 파일을 데이터 URL로 읽습니다
4.readAsText(file, [encoding]): 파일 텍스트로 읽혀지며 기본 인코딩 값은 'UTF-8'입니다.
또한 abort() 메서드는 파일 읽기를 중지할 수 있습니다.
파일을 읽은 후에도 FileReader 개체를 처리해야 합니다. 현재 스레드를 차단하지 않기 위해 API는 이벤트 모델을 채택하고 다음 이벤트를 등록할 수 있습니다.
1.onabort: 중단 시 트리거됨
2.onerror: 오류 발생 시 트리거됨
3. onload: 파일을 성공적으로 읽을 때 트리거
4.onloadend: 실패에 관계없이 파일을 읽을 때 트리거
5.onloadstart: 파일을 읽기 시작할 때 트리거
6.onprogress: 주기적으로 트리거 파일을 읽을 때
이러한 방법을 사용하면 파일을 처리할 수 있습니다.
먼저 텍스트 파일을 읽어 보겠습니다.
' this.result '').appendTo('body')
테스트해 보면 이 파일의 내용이 웹페이지에 추가되는 것을 확인할 수 있습니다. Chrome을 사용하는 경우 웹페이지를 서버나 플러그인에 넣어야 합니다. 파일 프로토콜이 실패합니다.
브라우저가 데이터 URI 프로토콜의 사진을 직접 표시할 수 있으므로 사진을 다시 시도해 보겠습니다. 그래서 이번에는 사진을 추가하겠습니다.
BlobBuilder는 Blob 객체를 생성할 수 있습니다. 이 Blob 개체를 URL.createObjectURL() 메서드에 전달하여 개체 URL을 가져옵니다. 그리고 이 개체 URL은 이 Blob 개체의 다운로드 주소입니다.
다운로드 주소를 얻은 후 요소를 생성하고 href 속성에 다운로드 주소를 할당하고 다운로드 속성에 파일 이름을 할당합니다(Chrome 14에서 지원).그런 다음 클릭 이벤트를 생성하고 처리를 위해 요소에 전달하면 브라우저가 Blob 개체 다운로드를 시작합니다.
마지막으로 URL.revokeObjectURL()을 사용하여 객체 URL을 해제하고 더 이상 이 파일을 참조할 필요가 없음을 브라우저에 알립니다.
다음은 단순화된 코드입니다.
코드 복사
코드는 다음과 같습니다.
var BlobBuilder || WebKitBlobBuilder || var URL = URL || webkitURL ||
var type = blob.type;
var force_saveable_type = 'application/octet-stream';
URL.revokeObjectURL(url);
}
var bb = new BlobBuilder;
bb.append('Hello, world!');
saveAs(bb.getBlob('text/plain;charset=utf-8'), 'hello world. txt');
테스트 중에 텍스트 파일을 저장하라는 메시지가 표시됩니다. Chrome은 웹페이지를 서버나 플러그인에 배치해야 합니다.