<template> <el-upload actions="#" :http-request="uploadFile" :mulitiple="true" :auto-upload="true" :file-list="fileList" :on-change="handleChange" :show-file-list="false" > <el-button>上传附件</el-button> </el-upload></template><script>export default { data() { return { fileList: [] } }, methods: { handleChange(file, fileList) { this.fileList = fileList }, uploadFile(file) { const formData = new FormData() this.fileList.map((file) => { formData.append('file', file.raw) }) // 执行axios请求 } },}</script>
上面是代码
现在的问题是 上传多个文件的时候回调用多次接口,比如上传三个文件就回调用三次axios请求
现在需要解决的是 上传多个文件只执行一次axios请求
不要将发送后台请求的axios方法写在自定义上传方法如:http-request="uploadFile"中,否则将会按文件数量发送,造成多次请求,不符合预期提交一次上传多个文件。
按照你的写法应该是:在uploadFile方法中可以将所有文件添加在一个变量中,然后使用其他按钮去调用axios接口。
以下是我们经常导入多个文件的写法,仅供参考
<el-upload accept=".xls, .xlsx" multiple drag action :limit="50" :file-list="fileList" :on-change="handleFileChange" :on-remove="handleFileRemove" :on-exceed="handleFileExceed" :auto-upload="false" > <i class="el-icon-upload"></i> <div class="el-upload__text"> 将文件拖到此处,或<em>点击上传</em> </div> </div> <div class="el-upload__tip" slot="tip" style="text-align: center; color: #e6a23c" > 支持批量多日上传,只能上传xls/xlsx文件 </div> </el-upload> <div v-if="fileList.length > 0" class="mt20 text-c"> <el-button type="success" size="mini" icon="el-icon-upload" class="mt10" :disabled="uploadLoading" @click="handleFileUpload" >确认上传</el-button > <el-button type="warning" size="mini" class="mt10" icon="el-icon-refresh-right" :disabled="uploadLoading" @click="handleFileAdd" >重新添加</el-button > </div>data() { return { file: {}, // 上传文件loading uploadLoading: false, // 上传文件列表 fileList: [], }}methods: { /** 更新选择的文件列表*/ handleFileChange(files, fileList) { this.fileList.push(files.raw); }, /** 移除文件*/ handleFileRemove(file, fileList) { this.fileList = fileList; }, /** 超出限制文件*/ handleFileExceed(files, fileList) { this.$message.warning( `本次上传限制 50 个文件,您选择了 ${ files.length + fileList.length } 个文件,请重新选择文件` ); }, /** 上传*/ handleFileUpload() { let fd = new FormData(); this.fileList.forEach((item) => { fd.append("files", item); }); this.uploadLoading = true; importFiles(fd).then((res) => { if (res) { this.$message.success("数据上传成功。"); } setTimeout(() => { this.fileList = []; this.uploadLoading = false; }, 100); }); },}
您可以看下,不知道这里是否能满足您的需求。
https://blog.csdn.net/m0_38039437/article/details/128579034
问题内容: 我遇到了这个简单的js ajax上传代码(由于某种原因,jquery 似乎不适用于HTML5), 但是我这里有两个问题, 这条线在物体之后是什么意思? 为什么在那里需要ID?我能做些什么使用jQuery 用? 此ajax仅用于单个文件上传,如何更改多个文件上传? 问题答案: 这行在对象FormData之后是什么意思? 在得到由它的ID元件。该抓住从元件中的第一选择的文件。将其追加到与字
问题内容: 我的测试需要在不同的浏览器中上传测试文件(我使用+ )。对于单个文件上传,一切正常。我只是发送路径 Firefox:我找不到正确的语法。 任何想法? 所有浏览器都有通用的语法吗? 问题答案: 据我所知,硒 仍然 不支持多个文件上传(请参阅google code上的问题 )。 至少有一种解决方法:显然创建一个包含所需输入字段的表单。这不是最佳的解决方案,因为它(可能)需要更改您的代码才能
问题内容: 我遇到的情况是,我有一个表格,其中有一行,其中有两个文本字段条目,我必须上载该行的文件,并且这种行可以是“ N”,然后是可以在整个表单中输入的主文件,而这些文件是表单的一部分,我必须在单击保存按钮后立即提交所有这些文件。 我有点被ng-upload困扰,它需要一个api调用,而对于这种形式,我真的不能超过一个api调用。示例html代码如下: 问题答案: 这是文件值绑定指令示例.. h
我有一个多文件上传表单: 我用ajax发布这些文件。我想一个接一个地上传选定的文件(为了创建单独的进度条,出于好奇)。 我可以通过以下方式获得文件列表或单个文件: 耶林 但是FileList是不可变的,我不知道如何提交单个文件。 我认为这是可能的,正如我所看到的http://blueimp.github.com/jQuery-File-Upload/.我不想使用这个插件,因为它与学习和结果一样重要
问题内容: 有没有办法用Flask接收多个上传的文件?我尝试了以下方法: 然后打印内容 如果我上传多个文件,它将仅打印该集中的第一个文件: 是否可以使用Flask的内置上传处理方式接收多个文件?谢谢你的帮助! 问题答案: 你可以使用flask.request.files的方法getlist,例如:
主要内容:1. 动作类,2. 结果页面,3. struts.xml,4. 示例,参考在上章节Struts2 文件上传示例, 用户允许选择一个文件并上传到服务器。在本教程中,您将学习如何允许用户将多个文件上传到服务器。 这里创建一个Web工程:strut2uploadfiles,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示: 1. 动作类 在Action类,可以使用列表或数组以存储上传的文件。 FileUploadAction.java 2. 结果页面 使用<s:f