Chrome 86부터 JavaScript로 파일을 읽고 저장하는 방법
3621 단어 webfilesjavascriptchrome
새로운 유형의 웹 애플리케이션을 위한 새로운 API
이 글을 쓰는 시점에서 Chrome 86은 몇 주 안에 출시될 예정이며 흥미로운 새 기능인 기본 파일 시스템 API를 제공합니다. 이 API를 사용하면 브라우저에서 JavaScript를 사용하여 파일을 읽고/하거나 파일 시스템에 저장하는 웹 페이지를 작성할 수 있습니다. 지금까지는 HTMLinput
이 있는 파일만 읽을 수 있었고 브라우저에서는 저장이 불가능했습니다. 이제 애플리케이션이 웹 브라우저의 파일을 처리하는 경우 향상된 사용자 경험을 제공할 수 있습니다.
아직 모든 브라우저에서 구현되지 않은 새로운 API이므로 주의하십시오. 현재 브라우저 지원here 을 확인할 수 있습니다. W3C Draft이 있지만 표준 트랙에는 없습니다. Google은 Chrome에서 여러 실험을 통해 이 작업을 수행했으며 API가 변경될 수 있습니다. 지금은 이러한 기능을 Google Chrome 사용자에게만 제공할 수 있으며 방법이 있는지 확인해야 합니다.
This article on web.dev 많은 설명이 있지만 이 글을 쓰고 있는 지금은 완전히 최신 정보가 아닙니다. 다른 많은 사이트에서도 이전 구문을 사용합니다. 이 블로그 게시물은 2020년 10월 Chrome 86에서 제공되는 구문과 함께 간단한 소개 및 코드 예제를 제공해야 합니다.
디렉토리에서 파일 읽기
내 첫 번째 사용 사례는 처리, 업로드 등을 위해 웹 앱에 로드하려는 파일 디렉터리가 컴퓨터에 있다는 것입니다. 따라서 web.dev의 게시물을 사용하고 Chrome 86의 최신 메서드 이름으로 업데이트합니다. 이 작은 기능을 생각해 냈습니다.
async openDirectory() {
const handle = await window.showDirectoryPicker();
const entries = await handle.getEntries();
const files = [];
for await (const entry of entries) {
const file = await entry.getFile();
files.push(file);
}
return files;
}
내 웹 앱은 표준 JavaScriptFile interface와 함께 작동합니다. 배열files
은 이제 File
개체의 배열이며 이전 구현처럼 사용할 수 있습니다. 이전 방식은 HTML<input type="file" />
을 사용하여 사용자가 파일을 선택하고 내 앱에 로드할 수 있도록 했습니다. 이제 showDirectoryPicker
메서드를 사용하여 사용자가 파일과 함께 감독을 선택할 수 있도록 합니다. 하나의 파일만 선택해야 하는 경우 메서드가 showOpenFilePicker
호출됩니다.
이제 사용자에게 브라우저가 선택한 디렉토리에서 읽을 수 있는지 확인하는 권한 프롬프트가 표시되는 변경 사항이 포함된 최신 버전의 구현이 있습니다. 보안 및 권한 항목에 대한 추가 정보가 필요한 경우 이전에 언급한 web.dev 게시물 및 W3C 사양을 확인하십시오. W3C 사양에는 웹 개발자를 위한 좋은 예도 있습니다.
디렉토리에 파일 쓰기
더 중요한 사용 사례는 파일을 디스크/파일 시스템에 쓰는 것입니다. 이것은 이전에는 실제로 불가능했습니다. 다운로드와 같은 해결 방법을 찾을 수 있지만 이제 사용자가 디렉터리를 선택하고 거기에 파일을 저장할 수 있는 멋진 API가 있습니다. 다음은 예제 코드를 업데이트한 후 생각해낸 방법입니다.
async exportToFiles() {
const directoryHandle = await window.showDirectoryPicker();
const all = getAllFiles(); // This is again an array of 'File' objects
for (const file of all) {
const fileHandle = await directoryHandle.getFile(file.name, {create: true});
const writable = await fileHandle.createWritable();
await writable.write(file.content);
await writable.close();
}
alert('Done');
}
이 예에서는 사용자가 여러 파일을 저장할 디렉토리를 선택하기를 원하기 때문에 showDirectoryPicker()
를 다시 사용하고 있습니다. 디렉토리에 대한 핸들을 얻고 다시 File
개체의 배열을 갖게 됩니다. 디렉토리에 파일 핸들을 만들고 여기에 파일 내용을 씁니다. 하나의 파일만 저장하려면 다음과 같은 옵션과 함께 showSaveFilePicker(options)
를 사용할 수 있습니다.
const options = {
types: [
{
description: 'Text Files',
accept: {
'text/plain': ['.txt'],
},
},
],
};
결론
저는 개인적으로 현재 형태의 Native File System API를 정말 좋아합니다. 사용하기 쉽고 브라우저에서 새로운 종류의 응용 프로그램을 구축할 수 있습니다. 이것이 곧 표준이 되고 Firefox 및 Safari와 같은 다른 브라우저에서 이 API를 구현하기를 진심으로 바랍니다.
Reference
이 문제에 관하여(Chrome 86부터 JavaScript로 파일을 읽고 저장하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/niklasmerz/how-to-read-and-save-files-in-javascript-starting-with-chrome-86-51dg
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
async openDirectory() {
const handle = await window.showDirectoryPicker();
const entries = await handle.getEntries();
const files = [];
for await (const entry of entries) {
const file = await entry.getFile();
files.push(file);
}
return files;
}
async exportToFiles() {
const directoryHandle = await window.showDirectoryPicker();
const all = getAllFiles(); // This is again an array of 'File' objects
for (const file of all) {
const fileHandle = await directoryHandle.getFile(file.name, {create: true});
const writable = await fileHandle.createWritable();
await writable.write(file.content);
await writable.close();
}
alert('Done');
}
const options = {
types: [
{
description: 'Text Files',
accept: {
'text/plain': ['.txt'],
},
},
],
};
저는 개인적으로 현재 형태의 Native File System API를 정말 좋아합니다. 사용하기 쉽고 브라우저에서 새로운 종류의 응용 프로그램을 구축할 수 있습니다. 이것이 곧 표준이 되고 Firefox 및 Safari와 같은 다른 브라우저에서 이 API를 구현하기를 진심으로 바랍니다.
Reference
이 문제에 관하여(Chrome 86부터 JavaScript로 파일을 읽고 저장하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/niklasmerz/how-to-read-and-save-files-in-javascript-starting-with-chrome-86-51dg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)