当前位置: 首页 > 知识库问答 >
问题:

javascript - vue2上传多个文件?

郝池暝
2023-09-27
<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请求

共有2个答案

淳于星宇
2023-09-27

不要将发送后台请求的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);      });    },}
施喜
2023-09-27

您可以看下,不知道这里是否能满足您的需求。
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