如何在存储位置保存输入类型文件数组?

时间:2017-02-08 21:29:28

标签: javascript jquery json file-upload local-storage

您好我想保存输入类型文件的数组。

<input type="file" id="fuGerber" onchange="saveFiles(this.files)" multiple />

我已经尝试过了:

localStorage.setItem('files',JSON.stringify(files));

或者这个:

 localStorage.setItem('files',JSON.stringify(files[0]));

但是JSON.stringify在第二种情况下返回空“{}”或者这是“{”0“:{}}” 是否有人知道要保存它而不会在数组内部丢失任何东西。

这就是我的阵列:

This is what my array have

2 个答案:

答案 0 :(得分:2)

也许您错过了使用文件阅读器实际读取文件输入中的数据,然后您可以将其存储在数组中,然后再将其保存到localStorage

请参阅此答案here

<强>更新

所以我终于意识到在JSFiddle中复制问题后你遇到了什么麻烦。问题是FileList不是一个数组(see here),它是一个自定义列表类型。因此,JSON编码器不知道如何正确编码。

要从FileList获取数据,您必须手动创建FileList中每个文件的文件对象,将每个对象推送到数组\,然后您将能够进行字符串化并设置为localStorage。

执行上述操作后,我能够成功保存文件: View of files array in localStorage

请参阅我的代码示例:

JSFiddle

干杯!我希望这会有所帮助:)

答案 1 :(得分:-1)

如果您正在尝试保存数组,请执行以下操作:

保存:

 localStorage.setItem('files', JSON.stringify(files));

从localStorage恢复:

value  = localStorage.getItem('files');
result = JSON.parse(value);

<小时/> 更新:

对于文件,请检查此链接 How to save an image to localStorage and display it on the next page?