注意:
下面的答案反映了2009年遗留浏览器的状态.现在,您可以在2017年通过JavaScript实际设置文件输入元素的值.
有关详细信息和演示,请参阅此问题中的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?
我有一个网站,允许用户多次上传文件进行处理.目前我有一个文件输入,但我希望能够记住用户选择并在屏幕上显示它.
我想知道怎么做是在用户选择文件后我会记住他们的选择并使用在重新加载页面时预先选择的文件重新显示文件输入.我需要知道的是如何记住和重新填充文件输入.
我也对不使用文件输入的方法持开放态度(如果可能的话).
我正在使用JQuery
现在大多数浏览器都支持IndexedDB将数据/文件直接存储为File,Blob或ArrayBuffer.
此代码将IDB密钥"File1"保存为文件
<input type="file" id="userfile" />
var a = document.getElementById("userfile");
var b = a.files[0];
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用以下代码直接将此文件保存到IDB
//LocalForage is a library for indexedDB developed by Mozilla
//Note: localforage._config.driver=asyncStorage (IDB method)
function run(){
//"File1" = IDB data table key and b=value
localforage.setItem("File1", b, function(err, value) {
console.log(err)
});
}
a.onchange = function(){
run()
}
Run Code Online (Sandbox Code Playgroud)
此代码将IDB密钥"BlobFile"保存为Blob
mb = new Blob([b],{type:b.type});
function runB(){
localforage.setItem("BlobFile", mb, function(err, value){
console.log(err)
});
}
a.onchange = function(){
runB()
}
Run Code Online (Sandbox Code Playgroud)
我想知道将文件存储到IDB的最佳做法是什么.(文件/斑点/ ArrayBuffer) …