ดังกล่าวก่อนหน้านี้FileSystemและFile APIs พร้อมกับFileWriter API สามารถใช้ในการอ่านและเขียนไฟล์จากบริบทของแท็บ / หน้าต่างเบราว์เซอร์ไปยังเครื่องไคลเอนต์
มีหลายสิ่งที่เกี่ยวข้องกับ FileSystem และ FileWriter API ที่คุณควรระวังซึ่งบางเรื่องถูกกล่าวถึง แต่มีค่าที่ต้องทำซ้ำ:
- ปัจจุบันการติดตั้ง API นั้นมีอยู่เฉพาะในเบราว์เซอร์ที่ใช้ Chromium (Chrome & Opera)
- API ทั้งสองตัวถูกนำออกจากแทร็กมาตรฐาน W3C เมื่อวันที่ 24 เมษายน 2014 และ ณ ขณะนี้เป็นกรรมสิทธิ์
- การลบ APIs (ปัจจุบันเป็นกรรมสิทธิ์) จากการใช้เบราว์เซอร์ในอนาคตเป็นไปได้
- Sandbox (สถานที่ด้านนอกของดิสก์ไฟล์ที่สามารถผลิตไม่มีผล) ถูกนำมาใช้ในการจัดเก็บไฟล์ที่สร้างขึ้นด้วย API จะ
- ระบบแฟ้มเสมือน (โครงสร้างไดเรกทอรีที่ไม่จำเป็นต้องอยู่บนดิสก์ในรูปแบบเดียวกับที่มันไม่เมื่อเข้าถึงได้จากภายในเบราว์เซอร์) จะใช้แทนไฟล์ที่สร้างขึ้นด้วย API จะ
นี่คือตัวอย่างง่ายๆของวิธีการใช้ API ทั้งทางตรงและทางอ้อมเพื่อทำสิ่งเหล่านี้:
BakedGoods *
เขียนไฟล์:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
อ่านไฟล์:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
การใช้ไฟล์ raw, FileWriter และ FileSystem API
เขียนไฟล์:
function onQuotaRequestSuccess(grantedQuota)
{
function saveFile(directoryEntry)
{
function createFileWriter(fileEntry)
{
function write(fileWriter)
{
var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
fileWriter.write(dataBlob);
}
fileEntry.createWriter(write);
}
directoryEntry.getFile(
"testFile",
{create: true, exclusive: true},
createFileWriter
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
อ่านไฟล์:
function onQuotaRequestSuccess(grantedQuota)
{
function getfile(directoryEntry)
{
function readFile(fileEntry)
{
function read(file)
{
var fileReader = new FileReader();
fileReader.onload = function(){var fileData = fileReader.result};
fileReader.readAsText(file);
}
fileEntry.file(read);
}
directoryEntry.getFile(
"testFile",
{create: false},
readFile
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, getFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
แม้ว่า FileSystem และ FileWriter APIs จะไม่อยู่ในแทร็กมาตรฐานอีกต่อไปการใช้งานของพวกเขาสามารถพิสูจน์ได้ในบางกรณีในความคิดของฉันเพราะ:
- ความสนใจที่ต่ออายุใหม่จากผู้ขายเบราว์เซอร์ที่ไม่ใช้งานอาจทำให้พวกเขากลับมาได้ทันที
- ส่วนแบ่งการตลาดของการใช้เบราว์เซอร์
- Google (ผู้สนับสนุนหลักของ Chromium) ไม่ได้ให้และวันที่สิ้นสุดของ API
ไม่ว่า "บางกรณี" จะรวมอยู่ในตัวคุณเองหรือไม่
* BakedGoods ดูแลโดยไม่มีใครอื่นนอกจากเจ้านี่ตรงนี้ :)