vue上传前后台传输文件及Java web后台保存管理

一. 传输文件管理
开始:首先是配置后台接收文件相关类加载:
① ssm框架配置如下:
(1)注意此处id务必是multipartResolver
(2)引入文件上传相关jar包,commons-io 、commons-fileupload
(3)enctype属性必须为:multipart/form-data

<!--开启文件接收 最大10m 2020-01-06  -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="10485760" />
	</bean>

②springboot框架:
(1)引入maven

<dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
</dependency>

(2)application.properties配置

# 上传文件总的最大值
spring.servlet.multipart.max-request-size=10MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=10MB

1.vue前台将文件以formData类型打开发送

dialogFileInfo(){//文件上传到服务器
            if(this.dialogFile==null||this.dialogFile==""){
                this.$message({type:"warning",message: "请先选择文件上传!"});
                return;
            }
            var files=new FormData();
            files.append("diaFile",this.dialogFile);//单个文件上传
            console.log(this.dialogFile.original);
              this.$axios({
                  url:"/api/sendMessage/diaFilename",
                  method:"post",
                  data:files,
              }).then(data=>{
                  //this.isDisplay.files=false;
                  var obj = {person: this.realname, words: "文件:"+this.dialogFileName+"-上传成功!!!"};
                  this.arr.push(obj);
                  //this.$websocket.state.websock.send(this.userName+"#$文件:"+this.dialogFileName+"#"+this.receiveUserName);
                  this.$message({type:"success",message: "文件上传成功!!!"});
              }).catch(error=>{
                  this.$message("连接超时!");
              })
          },

2.后台Java接收并保存:(我在此处数据库存的是文件地址,真实文件另存):

/**
	 * 文件上传
	 * @param keyWord
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	@RequestMapping(value="/diaFilename",method=RequestMethod.POST,produces="application/json")
	public NmOptData diaFile(@RequestParam("diaFile")MultipartFile keyWord) {
		try {
			String saveFile="E:\\savedialogfile\\";//储存的地址
			File file=new File(saveFile);
			if(!file.exists()) {
				file.createNewFile();
			}
			FileOutputStream writer=new FileOutputStream(new File(file,keyWord.getOriginalFilename()));
			writer.write(keyWord.getBytes());
			writer.flush();
			writer.close();
			return ReturnDataUtils.getSuccess();
		} catch (Exception e) {
			return ReturnDataUtils.getFailCode(ErrorCodeUtil.NMOPT_OPERFAIL);
		}
	}

3.文件下载的vue前端:

getFileDownLoad(fName){//下载文件
            var parameter=new URLSearchParams();
            parameter.append("fileName",fName.split(":")[1]);
              this.$axios({
                  url:"/api/sendMessage/getFileName",
                  method:"post",
                  data:parameter,
                  responseType: 'blob',//单个文件务必设置文件类型
              }).then(data=>{//获取数据
                  var response=data.data;
                  /*let contentDisposition = data.headers['content-disposition'];//请求头中寻求文件名此处没用到可以自己根据需求使用
                  let fileName = contentDisposition.substring(contentDisposition.indexOf('=')+1);*/
                 /* console.log('fileName=' + fileName);*/
                  let url = window.URL.createObjectURL(new Blob([response]));//将获取的文件转化为blob格式
                  let a = document.createElement('a');//此处向下是打开一个储存位置
                  a.style.display = 'none';
                  a.href = url;
                  a.setAttribute('download',fName.split(":")[1]);
                  document.body.appendChild(a);
                  a.click();//点击下载
                  document.body.removeChild(a);// 下载完成移除元素
                  window.URL.revokeObjectURL(url);// 释放掉blob对象
                  var obj = {person: this.realname, words: "文件:"+fName.split(":")[1]+"-接收成功!!!"};
                  this.arr.push(obj);
                 // this.$websocket.state.websock.send(this.userName+"#文件"+fName.split(":")[1]+"接收完成#"+this.receiveUserName);
              }).catch(error=>{
                  this.$message("连接超时");
              })
          },

4.文件下载时后台代码如下:

/**
	 * 文件获取
	 * @param keyWord
	 * @return
	 */
	@RequestMapping(value="/getFileName",method=RequestMethod.POST)
	public byte[] getFile(@RequestParam("fileName")String fileName) {
		String path="E:\\savedialogfile\\";//从储存地址取出
		File file=new File(path+fileName);
		byte[] fleBytes = null;
		FileInputStream fileInputStream = null;
		ByteArrayOutputStream bos = null;
		try {
			fileInputStream=new FileInputStream(file);
			bos = new ByteArrayOutputStream();
			byte[] bytes=new byte[1024];
			int len=-1;
			while((len=fileInputStream.read(bytes))!=-1) {
				bos.write(bytes, 0, len);
			}
			fleBytes=bos.toByteArray();//转化为字节流
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				fileInputStream.close();
				bos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return fleBytes;//返回数据
	}

结语:这样就完成了一个单个文件的上传与下载,有需要的有问题的兄跌欢迎联系

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Spring Boot是一种构建Java应用程序的框架,它提供了开发Java应用程序所需的所有基础设施和工具。MyBatis是一种流行的持久性框架,通过它,我们可以轻松地与关系数据库交互。Vue是一种流行的JavaScript框架,用于构建用户界面。 校园任务与通知管理系统是一个基于Java Web后端分离的系统,可以管理学生的任务和校园通知。系统使用Spring Boot和MyBatis框架进行后端开发,使用Vue框架进行端开发。系统具有以下主要功能: 1. 学生可以登录系统并查看他们的任务和通知。 2. 学生可以将任务标记为已完成,并且可以设置任务的截止日期。 3. 管理员可以发布通知,并可以随时更新和删除通知。 4. 管理员可以分配任务给学生,并可以在任务上设置截止日期和重要性级别。 5. 管理员可以查看所有任务和通知,并可以从中过滤和搜索。 整个系统采用后端分离的设计方案,使得端和后端具有独立性和灵活性。端通过Vue与后端通信,后端通过Spring Boot和MyBatis提供数据和服务,确保系统的高效性和安全性。 总之,Spring Boot,MyBatis和Vue是构建校园任务和通知管理系统所需的必要技术。 这些技术的组合可以为系统带来高效性,可靠性和易扩展性。 ### 回答2: Spring Boot是一个基于Spring框架的快速开发的Web应用程序框架,可以简化Java web应用程序的开发流程。MyBatis是一种ORM框架,提供了许多常见的功能,如事务管理、缓存、SQL映射、连接池和一系列插件。Vue是一种现代化的JavaScript框架,用于构建交互式Web UI。这三个框架的结合可以提高Web应用程序的性能和开发效率。 校园任务与通知管理系统使用Spring Boot和MyBatis作为后端,提供数据的处理和管理Vue作为端框架,实现用户界面和用户交互。该系统能够实现对校园任务和通知的管理、发布和查看。 该系统的后端主要包括用户管理、任务管理和通知管理三个部分。用户管理模块用于实现对用户信息的管理,包括用户的注册、登录和权限管理等功能。任务管理模块可以实现对校园任务的发布、分配、执行和查看。通知管理模块能够实现对校园通知的发布、发送和查看。 端使用Vue来实现用户界面和用户交互,通过Ajax请求后台API获取数据,实现后端分离。Vue的特点是轻量级、易于学习和使用,可以大大提高系统的用户体验。 综上所述,采用Spring Boot、MyBatis和Vue开发的校园任务与通知管理系统是一种性能强、开发效率高、用户体验好的Java Web后端分离系统,能够实现对校园任务和通知的管理、发布和查看,对学生和教师的教学工作有很大的帮助。 ### 回答3: 校园任务与通知管理系统是一个用于校园中任务分配和通知发布的管理系统。该系统采用了springboot,mybatis和vue进行后端分离的开发。 学生、教师和管理员都可以登录该系统。学生可以查看自己的任务分配和通知,也可以通过系统进行任务完成情况的反馈。教师可以发布任务和通知,并管理学生完成任务的情况。管理员可以进行用户管理、任务管理和通知管理等操作。 该系统的后端使用springboot进行开发,采用了mybatis进行数据库的操作,实现了高效的数据管理和查询。端使用vue进行开发,实现了良好的用户交互体验。后端使用restful接口进行通信,实现了数据的高效传输和交互。 总的来说,校园任务与通知管理系统是一款高效可靠的管理系统,为校园的任务分配和通知发布提供了有效的支持。该系统采用后端分离的开发模式,结合了springboot、mybatis和vue的优势,具有较好的性能和用户体验。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值