繁体   English   中英

Vue.js 显示文件名 event.target.files

[英]Vue.js show file name event.target.files

我正在使用 vue 2 在我的 webapp 中创建上传功能。目前它看起来像这样:

<label class="btn btn-xs btn-primary">
    <input type="file" name="attachment[]" @change="onFileChange" multiple/>
    Upload file
</label>

input[type="file"]  {
  display: none;
}


onFileChange() {
    this.reaction.attachment = event.target.files || event.dataTransfer.files;
}

所以现在我想显示event.target.files对象上的文件名。

我试过这个:

<p v-for="file in reaction.attachment">
  {{ file.name }}
</p>

但这不起作用!? 当我查看我的 vue devtools 时,附件对象如下所示:

attachment:FileList

那么我该如何让它发挥作用呢?

非常感谢

您需要在 onFileChange 函数中使用document.getElementById("fileId").files[0].name获取文件名。

<label class="btn btn-xs btn-primary">
    <input type="file" name="attachment[]" id="fileId" @change="onFileChange" multiple/>
    Upload file
</label>
{{fileName}}


input[type="file"]  {
  height:0;
  weight:0;
  //OR
  display:none
}

在脚本内部,将事件传递给函数。

onFileChange(event){
   var fileData =  event.target.files[0];
   this.fileName=fileData.name;
}

以下代码在一次选择 1 个文件时有效。 使用引导类显示输入字段和标签的 HTML 代码:

<input type="file" class="custom-file-input" id="idEditUploadVideo"
       v-on:change="videoChoosen">
<label class="custom-file-label" id="idFileName" for="idEditUploadVideo">
    [[videoFileName]]</label>

JS 代码在用户选择文件后立即在标签中显示文件名:

var vueVar = new Vue({
    el: '#idSomething',
    data: {
        videoFileName:''
    },
    methods: {
        videoChoosen(event){
            this.videoFileName = event.target.files[0].name;
        }
    },
    delimiters: ["[[", "]]"],
});

我在沙箱中创建了一个工作示例,您可以查看它。 它可以选择一个文件或多个文件https://codesandbox.io/s/condescending-wildflower-jljxn?file=/src/App.vue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM