【发布时间】:2018-05-09 11:34:39
【问题描述】:
我有多个文件输入,并希望为每个输入生成上传文件的预览。我正在等待所有这些输入的更改,然后触发new FileReader()。不幸的是,onload 操作从未触发,我做错了什么?
$("body").on("change", ".file", function(event){
showPreview(event);
})
function showPreview(event){
console.log("showPreview started");
var file = event.target.files[0];
console.log("file loaded: ", file);
var reader = new FileReader();
console.log("reader initiated: ", reader);
reader.onload = function(event) {
console.log("this never works : ", event);
console.log(event.target.result);
};
}
label {
margin: 0 auto;
display: block;
width: 200px;
height: 100px;
}
.preview {
display: inline-block;
width: 50px;
height: 50px;
border: solid 5px red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
<span class="preview"></span>
<input type="file" class="file">
</label>
<label>
<span class="preview"></span>
<input type="file" class="file">
</label>
<label>
<span class="preview"></span>
<input type="file" class="file">
</label>
<label>
<span class="preview"></span>
<input type="file" class="file">
</label>
【问题讨论】:
-
@Teemu 它没有,我在日志中的任何地方都看不到“这永远不起作用”。
-
嗯。 ...您不会对新创建的阅读器对象做任何事情。
-
添加
reader.readAsDataURL(file)触发onload -
@Teemu 是的,我愿意,但我不能因为卸载永远不会发生。
-
仅仅创建一个 FileReader 的实例不会触发它的 onload 事件。正如 mplungjan 所说,您必须读取文件...
标签: javascript jquery fileapi