javascript - 文件 API - reader.onload 从未被触发?

标签 javascript jquery fileapi

我有多个文件输入,想为每个输入生成上传文件的预览。我在等待所有这些输入发生变化,然后触发 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>

https://jsfiddle.net/x59gctL5/

最佳答案

您需要在事件处理程序中调用 readAsText()

参见 documentation

工作代码:

function showPreview(event){
  // ... rest of your code

  reader.onload = function(event) {
    console.log("this never works : ", event);
    console.log(event.target.result);
  };

  reader.readAsText(file);
}

关于javascript - 文件 API - reader.onload 从未被触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50252395/

相关文章:

javascript - 禁用单选按钮

javascript - 如何设置元素的索引

javascript - 访问 File 对象的某些列出的属性时返回 "undefined"

javascript - 使用 Javascript 解码 JPEG2000 位数组图像

javascript - 使用动态变量作为多维对象的键

javascript - each() 函数未在 this.collection 上定义

javascript - 如何让按钮显示文件/图像的值? JavaScript

javascript - 仅显示具有特定类的同级 div

javascript - 如何将文件切成碎片并在 Javascript FileApi 中恢复它

javascript - react ES6 : Get selected value in dropdown list using semantic UI