gpt4 book ai didi

html - 验证文件上传

转载 作者:搜寻专家 更新时间:2023-10-30 22:57:51 26 4
gpt4 key购买 nike

我正在尝试使用 vuetify 在 Vue.js 中上传一个文件,然后将上传的文件保存在我的数据对象中。

HTML:

<input id="file-upload" type="file" @change="onFileChange">

在我的方法中我调用:

onFileChange(e) {

var files = e.target.files || e.dataTransfer.files;
if (!files.length) {
return;
}
this.editedPerson.id_file = e.target.files[0].name;
},

这 100% 有效。

但是,我确实想使用 Vuetify 组件:

<v-btn color="blue-grey" class="white--text" @click.native="openFileDialog">Upload<v-icon right dark>cloud_upload</v-icon></v-btn>

我隐藏了原始文件输入标签,但在这个 v-btn 组件上我调用了以下方法:

openFileDialog() {
document.getElementById('file-upload').click();
},

因此,当我点击 v-btn 组件时,它会模拟点击隐藏文件输入标签,我可以选择一个文件。

更改输入标签后,我仍然可以控制台记录上传的文件,但是

this.editedPerson.id_file = e.target.files[0].name;

不再有效。

发生这种情况有什么原因吗?

最佳答案

以下代码对我来说效果很好。我为 HTTPClient 使用了 axois,你可以选择任何东西

<div id="app">
<v-btn color="blue-grey" class="black--text" @click.native="openFileDialog">
Upload
<v-icon right dark> cloud_upload</v-icon>
</v-btn>
<input type="file" id="file-upload" style="display:none" @change="onFileChange">
</div>


Vue.use(Vuetify);
var vm = new Vue({
el: "#app",
data: {
formData: new FormData(),
},
methods: {
openFileDialog() {
document.getElementById('file-upload').click();
},
onFileChange(e) {
var self = this;
var files = e.target.files || e.dataTransfer.files;
if(files.length > 0){
for(var i = 0; i< files.length; i++){
self.formData.append("file", files[i], files[i].name);
}
}
},
uploadFile() {
var self = this;
axios.post('URL', self.formData).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
},
},

});

关于html - 验证文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52645358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com