Javascript html 5+;webkitRequestFileSystem:从用户保存图像文件
使用webkitRequestFileSystem,我想做一些非常简单的事情:从用户那里获取一个文件,将其保存到浏览器本地文件系统,然后在以后使用它(例如作为image src等) 我读过关于webkitRequestFileSystem的文章,但并没有找到任何关于从用户克隆文件的内容(也许我错过了?) 因此,我尝试了一个简单的实现,包括读取、获取文件、写入,一切似乎都正常(调用成功回调),我可以看到带有chrome扩展名的文件(HTML5文件系统浏览器),但当我尝试使用图像url时,它会显示一个损坏的图像图标 下面是克隆文件的代码片段(需要稍微清理一下):Javascript html 5+;webkitRequestFileSystem:从用户保存图像文件,javascript,html,filesystem-browser,Javascript,Html,Filesystem Browser,使用webkitRequestFileSystem,我想做一些非常简单的事情:从用户那里获取一个文件,将其保存到浏览器本地文件系统,然后在以后使用它(例如作为image src等) 我读过关于webkitRequestFileSystem的文章,但并没有找到任何关于从用户克隆文件的内容(也许我错过了?) 因此,我尝试了一个简单的实现,包括读取、获取文件、写入,一切似乎都正常(调用成功回调),我可以看到带有chrome扩展名的文件(HTML5文件系统浏览器),但当我尝试使用图像url时,它会显示一
var src_文件= 回答自己:应该使用readAsArrayBuffer()而不是readAsBinaryString()。。。那是多么浪费时间啊://至少你抓到了!
var src_file = .... <-- got it from user
filesystem.root.getFile("output.png", {create: true}, function(dest_file)
{
var reader = new FileReader();
reader.onerror = function() {alert("ERROR")};
reader.onload = function(e)
{
read_buffer = e.target;
dest_file.createWriter(function(fileWriter) {
var blob = new Blob([read_buffer.result], {type: 'application/octet-stream'}); // <-- also tried "image/png" etc..
fileWriter.onerror = function() {alert("ERROR2")};
fileWriter.onwriteend = function(writer)
{
alert("SUCCESS!");
};
fileWriter.write(blob);
}, function() {alert("ERROR3")});
};
reader.readAsBinaryString(src_file);
});