Javascript可以序列化File对象

时间:2013-03-14 00:44:55

标签: javascript html5 fileapi

我需要从文件输入序列化File对象,以便可以保存对象,解析回文件对象,然后使用FileReader对象进行读取。

有人知道这是否可以在谷歌浏览器中使用?

我认为问题在于保护file.path属性。 Webkit浏览器隐藏了这个属性,所以我猜你在序列化时会删除路径。

然后,当然,FileReader无法在没有路径信息的情况下读取它。

以下是一个例子:

var files = uploadControl.files[0];
var dataFile = JSON.stringify(files);
var newFile = JSON.parse(dataFile);
var reader = new FileReader();
reader.onload = (function(event) {
    var fileContents = event.target.result;
});
reader.readAsText(newFile);

什么都没发生。读者未加载。如果我传递JSON对象,它也不起作用。

1 个答案:

答案 0 :(得分:3)

原则上,你所要求的是不可能的。如果可能有一些表示文件对象的文本,那么您可以从头开始构造该文本,对其进行反序列化,从而访问用户未授予权限的文件。

(例外情况是,如果代表性文本是某种强健的秘密位串(加密签名,或查找表中的稀疏键),只有浏览器可以首先给出 - 但我希望如果存在该功能,则会记录下来并且您已经找到它。)