问题
当我将<b-upload>
组件添加到页面时,它看起来很棒,我可以向其中添加文件,并且可以获得文件的名称 。但是如何获取文件内容?
我尝试过的事情
File
对象。当我
检查正在运行的代码中的那些对象,我只看到文件元数据,
例如文件大小和名称。我没有看到任何二进制文件数据。无法在'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");
答案 0 :(得分:0)
在我上面提到的the CodePen中发现了错误。
此行:
public String getMyData() {
return (String) getStateHelper().get("MYDATA." + getClientId());
}
public void setMyData(String data) {
getStateHelper().put("MYDATA." + getClientId(), data);
}
应该是这样:
reader.readAsText(o[0]);
文件数据将位于变量reader.readAsText(o);
中,就像上面的原始代码一样。