如何通过网页读取/写入本地文件
How to read/write local files through a web page?
我正在编写一个基于html的应用程序,并希望从本地文件中存储和检索数据。此应用不会托管在 Web 服务器上。
任何人都可以帮助启发如何做到这一点的话题吗?
你应该使用文件系统 API的 HTML5:
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, function(){
fs.root.getFile('test.dat', {}, function(fileEntry) {
fileEntry.file(function(file) {
// Here is our file object ...
});
});
}, errorHandler);
签出文件系统 API 以获取更多参考
访问 HTML5 测试以测试浏览器支持
尝试 HTML 5 文件系统 API
以下链接有详细信息
http://dev.w3.org/2009/dap/file-system/pub/FileSystem/
http://www.html5rocks.com/en/tutorials/file/filesystem/
这个问题的答案取决于你对以下问题的回答:
- 你对目前只存在于基于Chromium的浏览器(Chrome和Opera)中对写入文件的支持感到满意吗?
- 您是否可以使用现有的专有 API 来利用这种功能?
- 您对将来删除所述 API 的可能性好吗?
- 您是否可以接受将使用所述 API 创建的文件限制到磁盘上的沙箱(文件无法产生任何影响的位置)?
- 您是否可以使用虚拟文件系统(一种目录结构,它不一定以与从浏览器中访问时相同的形式存在于磁盘上)来表示此类文件?
如果您对上述所有问题的回答都是"是",那么使用 File、FileWriter 和 FileSystem API,您可以使用 Javascript 从浏览器选项卡/窗口的上下文中写入文件。
你问怎么样?
烘焙食品*
写文件:
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){}
});
使用原始文件、文件编写器和文件系统 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);
但是,如果您对开始时的任何问题回答"否"怎么办?
如果您对非本机解决方案持开放态度,Silverlight 还允许通过 IsolatedStorage 从选项卡/窗口竞赛中进行文件 I/O。但是,使用此工具需要托管代码;需要编写此类代码的解决方案超出了此问题的范围。
当然,一个使用互补的托管代码的解决方案,只留下一个Javascript来编写,完全在这个问题的范围内;):
//Write file to first of either FileSystem or IsolatedStorage
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem", "silverlight"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
*烘焙食品由这家伙维护:)
如果(并且仅当)你的平台将是IE,你可以利用HTA(HTML应用程序)框架:
http://msdn.microsoft.com/en-us/library/ms536471(VS.85).aspx
使用它的应用程序被授予系统级权限,并且可以使用与 Windows 脚本主机相同的对象(例如,用于读取和访问本地文件的文件系统对象)。
我过去曾成功地将其用于小型工作组应用程序并喜欢它 - 但这是在仅限IE的企业环境中。
- 在 iFrame 中注入 JS 文件,通过 Google chrome 扩展名中的 ContentScript 进行
- 正在读取php文件中通过ajax发送的json对象
- 只有最后一个文件是通过迭代形式.submit()操作下载的
- MP3文件未通过联机播放器播放
- 如何防止子文件夹通过匿名 http-url-path 访问,尽管父文件夹上有受密码保护的 aspx.default 文件
- 从HTML页面执行外部.js文件,通过发送输入.xml并从外部文件获取输出.xml.js文件
- 本地 HTML 文件格式通过 Ajax 提交到外部 URL
- 将变量传递给外部 javascript 文件以通过 onClick 更改图像
- 我只想要在 php 文件中通过 AngularJS 调用 Ajax 后的成功/失败消息.但是我也得到了带有标签的完整HT
- 如何调用“;点击“;输入类型“on input type”;文件“;通过调用其他元素的上下文
- HTML/PHP/JS 选择多个文件并通过FTP上传
- JS文件未通过HTTPS提供服务
- 上传文件以通过html表单进行解析
- 上传文件时通过AJAX更新列表
- JS-html5文件阅读器API-获取二进制字符串文件并通过ajax发送
- 如何使文件只能通过JQuery访问
- 如何允许PHP文件只能通过调用reference /view.php访问?url=123
- 文件验证通过正则表达式- Javascript
- 只有一个文件是通过ajax在PHP上传脚本上传
- 如何使用javascript使用选定的音频文件,通过