vue3上传多个文件并携带参数一起上传,后台java接收

这篇具有很好参考价值的文章主要介绍了vue3上传多个文件并携带参数一起上传,后台java接收。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接上代码

vue代码 上传文件组件,采用element-plus

<el-upload
      ref="upload"
      class="upload-files"
      action=""
      name="files"
      multiple
      :auto-upload="false"
      :file-list="fileList"
      :on-change="handleChange"
      style="margin-top: 20px"
  >
    <el-button slot="trigger" type="primary">选取文件</el-button>
  </el-upload>
  <div slot="footer" class="dialog-footer">
    <el-button type="primary" @click="submitUpload">保存</el-button>
  </div>

这里采用的是手动上传,选取文件后,点击保存才会触发上传操作

script 代码
// 上传文件数组
const fileList = ref([]) 

// 文件改变时回调钩子
const handleChange = (file, files) => {
  // file是当前上传的文件,files是当前所有的文件,
  // 不懂得话可以打印一下这两个数据 就能明白
  
  fileList.value = files
}

// 测试多文件上传
const submitUpload = async () => {
  let formData = new FormData()
  formData.append('name', 'myk')
  fileList.value.forEach(item => {
    // 这里有个坑,在将文件append到formData的时候, item其实并不是真是数据 item.raw才是
    formData.append('files', item.raw)
  })
    // 这里是发送请求,注意 headers: {'Content-Type': 'multipart/form-data'}
  let result = await requestUtil.fileUpload('/testUpload', formData)
  console.log(result)
}

这个地方如果不添加.raw  可以看到这个files是个[object Object] 同样它传入后台是个String类型

你用MultipartFile[]来接收这个String类型的 “[object Object]” 这肯定不行啊

就会给你报一个错 Field error in object 'testUploadVo' on field 'files': rejected value [[object Object]]

vue上传文件并携带参数,如何弄,手动上传多文件,java,vue.js,javascript

 我们再来试试加上.raw 可以看到这是files字段是个二进制,请求也发送成功了

vue上传文件并携带参数,如何弄,手动上传多文件,java,vue.js,javascript

 看一下后台打印

vue上传文件并携带参数,如何弄,手动上传多文件,java,vue.js,javascript

 确实可以接收到文件了,那试试多个文件

vue上传文件并携带参数,如何弄,手动上传多文件,java,vue.js,javascript

 多个文件也是可以接收到

现在来看看后台代码

创建一个实体类来接收参数

package com.mayk.controller;

import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author: mayk
 * @date: 2023/4/13
 */
@Data
public class TestUploadVo {
    private String name;

    private MultipartFile[] files;
}

在创建一个controller

package com.mayk.controller;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author: mayk
 * @date: 2023/4/13
 */
@RestController
@CrossOrigin
public class TestUpload {
    @PostMapping("/testUpload")
    public String testUpload(TestUploadVo testUploadVo) {
        for (MultipartFile file : testUploadVo.getFiles()) {
            System.out.println(file.getOriginalFilename());

        }
        System.out.println(testUploadVo.getName());
        return "ok";
    }
}

不需要添加@requestBody 因为这是前端是采用的FromData提交的

这样一个手动上传多文件就完成了

欢迎大佬指点文章来源地址https://www.toymoban.com/news/detail-539624.html

到了这里,关于vue3上传多个文件并携带参数一起上传,后台java接收的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui上传文件 + 携带参数案例

     js逻辑代码 失败响应的数据: 成功响应的数据:     参考文章 :https://www.cnblogs.com/lvhanghmm/p/15038986.html

    2024年02月05日
    浏览(27)
  • el-upload上传文件携带额外参数

    在进行文件上传时,需要传递其他参数,比如下图中需要实现携带下拉框的参数 前端实现:将下拉框中的参数 传递到:data中  :data=\\\"{\\\'script_model\\\':script_model}\\\"    后端实现: 从post请求中获取携带的参数:  script_model = request.POST.get(\\\'script_model\\\')

    2024年02月11日
    浏览(39)
  • .net6Api后台+VUE3前端实现上传和下载文件全过程

    首先本文参考的是,感谢博主: net6WebApi上传下载文件_cduoa的博客-CSDN博客_webapi下载文件 在博主的基础上,增加了新的功能,代码中有注明,并且使用VUE3前端实现。 后端部分: 1.首先建立IFileService文件 2.建立FileService文件 3.增加FileController文件 4.Program文件中,进行配置和跨域

    2023年04月09日
    浏览(44)
  • el-upload实现自定义携带参数上传文件( :http-request 方式)

    1. el-upload组件 使用 :http-request 自定义上传方法,action仍然要有,随便起个名字即可, 注意使用 :http-request 之后, :on-success, :on-error 指令是不会触发的 自定义上传 函数为  uploadFile 2. 封装上传方法(定义传输请求头,传输格式) 在main.js中将封装好的方法加入全局,后面可直接

    2024年02月11日
    浏览(35)
  • uni-app - 移动端(iOS&Android)批量上传文件,支持重传、删除、多选,携带参数,进度监控

    👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个平台找到我! 🏆 本文收录于专栏: uniapp踩坑指南 🔥 专栏介绍

    2024年02月03日
    浏览(38)
  • Vue实现多个文件上传

    通过vue和element实现多文件上传

    2024年02月16日
    浏览(37)
  • 【微信小程序】使用页面跳转并携带多个特定参数

    在我们项目的搭建时常常会用到页面跳转,在微信小程序中也支持多个跳转类型。如( wx.switchTabwx.reLauchwx.redirectTowx.navigateTowx.navigateBack )等等, 每一个路由API都是有相对应的特定跳转功能 ,在这里我就不赘述了。 微信开发者文档关于路由的知识点 这里我们 项目的需求 是

    2023年04月18日
    浏览(42)
  • [Vue3] Wangeditor富文本实现将粘贴中包含的图片自动上传后台,并替换src

    前言 吐槽: 还以为他们富文本把文字写好, 在一个个上传图片, 组成一片文章. 那就没有办法了, 只能修改下代码增加下自动上传图片功能. 后来写到一半才发现html 有个属性好像可以让跨域的图片 显示出来. meta name=\\\"referrer\\\" content=\\\"no-referrer\\\" / 以为这样就可以不用写了, 但是老大

    2024年02月04日
    浏览(36)
  • element ui 上传控件携带参数到后端

    2.携带不固定参数:         el-row          el-col :span=\\\"24\\\"           el-upload             :multiple=\\\"false\\\"             :show-file-list=\\\"false\\\"             :on-success=\\\"f_handleImageSuccess\\\"             :before-upload=\\\"f_HandleImageBefore\\\"             drag             action=\\\"\\\"             :

    2024年02月15日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包