1

使用 webkitRequestFileSystem,我想做一些非常简单的事情:从用户那里获取文件,将其保存到浏览器本地文件系统,然后使用它(例如作为图像 src 等)

我阅读了有关 webkitRequestFileSystem 的信息,但没有找到任何有关从用户那里克隆文件的信息(也许我错过了?)。

所以我尝试了一个简单的读取、获取文件、写入的实现,一切似乎都有效(调用成功回调),我可以看到带有 chrome 扩展名的文件(HTML5 文件系统资源管理器),但是当我尝试使用图像时url 它显示一个损坏的图像图标。

这是克隆文件的片段(有点,不得不清理一下):

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);
});

PS我在本地主机上工作,这是一个问题吗?

谢谢!

4

1 回答 1

1

回答我自己:应该使用 readAsArrayBuffer() 而不是 readAsBinaryString()... 那真是浪费时间:/

于 2015-09-06T22:13:54.910 回答