首页 > 其他分享 >Springboot+Vue实现多文件上传

Springboot+Vue实现多文件上传

时间:2023-12-11 11:44:41浏览次数:45  
标签:文件 Vue false Springboot upload file path 上传

多文件上传,后端接收到多次请求
vue实现

<el-upload
class="upload-demo"
action="http://10.240.46.88:8081/upload1"
:on-preview="handlePreview"
:on-remove="handleRemove"
:multiple="multiple"
:limit="3"
:on-exceed="handleExceed"
:on-success="sucess"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
springboot后台

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
System.out.println("上传文件方法触发了");
//判断非空
if (file.isEmpty()) {
return "上传的文件不能为空";
}
try {
// 测试MultipartFile接口的各个方法
// logger.info("[文件类型ContentType] - [{}]",file.getContentType());
// logger.info("[文件组件名称Name] - [{}]",file.getName());
// logger.info("[文件原名称OriginalFileName] - [{}]",file.getOriginalFilename());
// logger.info("[文件大小] - [{}]",file.getSize());
// logger.info(this.getClass().getName()+"图片路径:"+path);
String path = "/Users/lijianxi/projects/javaproject/springlearn/src/main/resources/";
File f = new File(path);
// 如果不存在该路径就创建
if (!f.exists()) {
f.mkdir();
}
File dir = new File(path + file.getOriginalFilename());
// 文件写入
file.transferTo(dir);
return "上传单个文件成功";
} catch (Exception e) {
e.printStackTrace();
return "上传单个文件失败";
}
}

2.多文件上传,后端接收到一次请求

vue实现

<el-upload
class="upload-demo"
ref="upload"
action="http://10.240.46.88:8081/upload2"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:http-request="uploadFile"
:auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
springboot后台

@PostMapping("/upload2")
public String upload2(@RequestParam("file")MultipartFile[] file){
System.out.println("-----22222--"+file.length);
String path = "/Users/lijianxi/projects/javaproject/springlearn/src/main/resources/";
if(file!=null&file.length>0) {
for (MultipartFile multipartFile : file) {
String fileName = multipartFile.getOriginalFilename();
File file1 = new File(path + fileName);
try {
multipartFile.transferTo(file1);
} catch (IOException e) {
e.printStackTrace();
return "上传失败";
}
System.out.println("");
}
}
System.out.println("上传成功");
return "多文件上传成功";
}

多文件上传时,默认的vue组件会将文件进行多次请求后端,为了可以实现一次请求,需要手动改造代码

html部分

修改:auto-upload="false"属性为false,阻止组件的自动上传
:http-request="uploadFile"覆盖上传事件
@click="submitUpload",给上传按钮绑定事件
js部分

在data中设置一个变量fileData
在方法中设置FormData的格式
通过ajax发送请求,携带参数为fileData

上传过程中报错:

TypeError: 'append' called on an object that does not implement interface FormData.
解决方法:

//报错请加入以下三行,则ajax提交无问题
cache: false,
processData: false,
contentType: false,

 

参考文章:http://blog.ncmem.com/wordpress/2023/12/11/springbootvue%e5%ae%9e%e7%8e%b0%e5%a4%9a%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0/

欢迎入群一起讨论

 

 

标签:文件,Vue,false,Springboot,upload,file,path,上传
From: https://www.cnblogs.com/songsu/p/17894036.html

相关文章

  • 上传到服务的jar包怎么使用docker运行部署
    将已经打好包的springboot的jar包手动上传到服务器,然后运维怎么构建容器并发布呢要使用Docker部署一个已经上传的JavaJAR包,你需要创建一个Dockerfile,并在里面编写必要的指令来设置运行环境和启动你的应用。以下是一个基本步骤的概述,以及一个示例Dockerfile。基本步骤:创建Do......
  • SpringBootTest测试配置
    在使用SpringBootTest测试的时候,如果配置文件里面使用了属性判断,使用logback-spring.xml时,有下面的配置:<ifcondition='!property("spring.profiles.active").contains("dev")'><then><appendername="stash"class="......
  • vue如何实现文件上传及预览
    vue文件上传及预览<template><divid="file"><inputname="files" id="uploaderInput" type="file" accept="images/*" multiple@change="change"/><divclass="file_upload">......
  • NodeJS项目build成为本地镜像上传阿里云ACR
    先注册阿里云账号选择“容器镜像服务”->“个人实例”。由于是测试目的,个人版也可以接受。创建命名空间创建镜像仓库选择本地仓库-本示例会从本机推送镜像创建成功后,会有提示相关命令创建一个nodejs项目package.json{"name":"docker_web_app","versio......
  • springboot031教师工作量管理系统-计算机毕业设计源码+LW文档
     摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了教师工作量管理系统的开发全过程。通过分析教师工作量管理系统管理的不足,创建了一个计算机管理教师工作量管理系统的方案。文章介绍了教师工作量管理系统的系统分析部分,包括可......
  • 基于springboot的房屋租赁系统-计算机毕业设计源码+LW文档
    摘 要房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于SpringBoot的房屋租赁系统。本文重点阐述了房屋租赁系统的开发过程,以实际运用为开发背景,基于SpringBoot框架,运用了Java......
  • SpringBoot实战项目:蚂蚁爱购(从零开发)
    简介这是从零开发的SpringBoot实战项目,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天彻底掌握开发SpringBoot项目。教程路线是:搭建环境=>安装软件=>创建项目=>添加依赖和配置=>通过表生成代码=>编写Java代码=>代码自测=>前后端联调=>准备找工作。学完即可成为合格的Java开发......
  • SpringBoot实战项目:蚂蚁爱购(从零开发)
    ​ 简介这是从零开发的SpringBoot实战项目,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天彻底掌握开发SpringBoot项目。教程路线是:搭建环境=>安装软件=>创建项目=>添加依赖和配置=>通过表生成代码=>编写Java代码=>代码自测=>前后端联调=>准备找工作。学完即可成为合格......
  • vue3中自定义ref实现防抖
    import{customRef}from"vue";/***@description自定义ref实现防抖*@param{String}value*@param{Number}delay*@returns*/exportconstdebounceRef=(value,delay)=>{lettimer;returncustomRef((track,trigger)=>({......
  • 如何在微信公众号上传附件
    微附件是一个为微信公众号提供文件管理服务的便捷工具。它允许运营者轻松上传和管理各式文档,涵盖Word、Excel、PPT、PDF和TXT格式。通过微附件,用户能够便捷地下载这些文件。该工具特别适合于公众号分享各种文档,如职位空缺、申请表格、注册资料、报名表、比赛公告、公示列表、招标信......