问题
当我将<b-upload>
组件添加到页面时,它看起来很棒,我能够向其中添加文件,并且能够获取文件的名称。但是如何获取文件内容?
我试过的
- 上传组件的文档提及
File
对象。当我在运行代码中检查这些对象时,我只看到文件元数据,例如文件大小和名称。我没有看到任何二进制文件数据。 - 我发现这个 CodePen看起来很有希望,但是当我尝试上传文件时它会引发错误:
无法在“FileReader”上执行“readAsText”:参数 1 不是“Blob”类型
这是来自该 CodePen 的 HTML:
<div id="app" class="container">
<b-field class="file">
<b-upload v-model="files">
<a class="button is-primary">
<b-icon icon="upload"></b-icon>
<span>Click to upload</span>
</a>
</b-upload>
<span class="file-name" v-if="files && files.length">
{{ files[0].name }}
</span>
</b-field>
</div>
这是Javascript:
Vue.use(Buefy.default);
const example = {
data() {
return {
files: []
};
},
watch: {
files: function(o, n) {
var reader = new FileReader();
reader.onload = e => this.$emit("load", e.target.result);
reader.readAsText(o[0]); // This line throws the error.
alert();
}
}
};
const app = new Vue(example);
app.$mount("#app");