【发布时间】:2016-02-10 16:18:19
【问题描述】:
我正在为我的网站编写一个简单的脚本来上传图片。我有一个由 div 点击触发的多文件输入<input type = 'file' name = 'files[]' id = 'hiddenFile' multiple>。当我对文件进行排队时,我希望能够删除一个。我知道我可以遍历$('#hiddenFile').val() 并拼接以获取名称,但我在确定文件名时遇到了问题。当我将文件分配给新的 img 容器时,如何获取名称?我试过console.log(f.name) 和一些变体,但它返回一个未定义的错误。这是我的脚本。我想我已经很接近了,但这是我正在学习的东西。谢谢!
function readURL(input) {
var files = $('#hiddenFile')[0].files; //where files would be the id of your multi file input
//or use document.getElementById('files').files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.onload = function (e) {
console.log(f.name); //how can I get the
//file name here to add it to the image as an attribute?
$("<img src = '"+e.target.result+"' class = 'addedImg'>").appendTo("#imgBox");
};
reader.readAsDataURL(f);
}
}
$(document).ready(function(){
$(document).on('click', '#addBtn', function(e){
e.preventDefault();
$('#hiddenFile').click();
});
});
【问题讨论】:
-
您是否尝试过在调试器中添加断点并查看对象中有哪些属性
-
使用“this”引用,“f”一旦触发就没有定义,它是一个稍后触发的事件。或者将其他东西传递给该函数。无论您最终需要什么。
标签: javascript jquery