2017-02-08 42 views
0

嗨,我想保存輸入類型文件的數組。如何將輸入類型文件的數組保存在存儲位置?

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

我已經嘗試過這樣的:

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

OR這樣的:

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

但JSON.stringify返回空 「{}」 或本在第二種情況下 「{」 0" :{}}「 有沒有人知道一些東西來保存它,而不會在數組裏面丟失任何東西。

這是我的陣列有:

This is what my array have

+0

爲什麼要將數據存儲在數組中?你不喜歡圖像的數據? – andrew196

+0

該文件不是圖像,是文本文件,我需要這樣做,因爲第二次用戶選擇另一個文件,我必須刷新頁面後,其選擇和頁面再次加載我想按順序得到該選擇給用戶不必再次選擇。 – user3442776

+0

要清楚,文件不是數組,它是一個FileList。這是一個微妙而重要的區別。 https://developer.mozilla.org/en-US/docs/Web/API/FileList – mhodges

回答

1

也許你正在使用的文件閱讀器,你保存它之前實際上從文件中讀取輸入數據,然後您可以在陣列中存儲失蹤到localStorage

看到這個答案here

更新:

所以,我終於明白您在使用中的jsfiddle複製發行後什麼麻煩。問題是FileList不是一個數組(see here),它是一個自定義列表類型。結果JSON編碼器不知道如何正確編碼。

要從FileList獲取數據,您必須手動創建FileList中每個文件的文件對象,將每個對象推送到一個數組\,然後您將能夠字符串化並設置爲localStorage。

做上述我是能夠成功地保存文件: View of files array in localStorage

見我的代碼示例:

JSFiddle

乾杯!我希望這有助於:)

+0

不是,我想保存數組之前爲fileReader進行處理。基本上保存輸入文件已被選中(數組對象)。 – user3442776

+0

這沒有意義。你還計劃如何讓數據實際保存?您仍然需要以某種方式讀取數據,否則會導致您收到的空數組。 @ user3442776 –

+0

所有這一切都是因爲我沒有清理所有對象的js庫問題,所以當我上傳另一個文件時,應用程序無法正常工作,這就是爲什麼我想自動刷新頁面並保存選擇用戶爲了不必在刷新後再次進行選擇 – user3442776

-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?

+1

不是通信陣列,是輸入文件的數組,當我應用該代碼時JSON.stringify返回「{}」它不能被轉換 – user3442776

+0

是你試圖安全地在本地存儲文件? –

+0

不是文件,輸入文件的內容。這是一個數組 – user3442776

相關問題