springboot上传下载文件
在yml配置相关内容
spring:
#
mvc:
throw-exception-if-no-handler-found: true
#静态资源
static-path-pattern: /**
resources:
#静态资源
static-locations: file:${img.location}
在我们配置404异常添加的配置要关掉(也就是说想用静态资源,就要放弃404异常的统一捕获,解决方案有:http://blog.springcloud.cn/sc/wk2/)
spring:
#
mvc:
throw-exception-if-no-handler-found: true
resources:
add-mappings: false
上传文件:
前端:
<form enctype="multipart/form-data" id="uploadForm">
<input type="file" name="uploadFile" id="upload_file" style="margin-bottom:10px;">
<input type="button" id="uploadPicButton" value="上传" onclick="uploadImage()">
</form> var pic = $('#upload_file')[].files[];
var fd = new FormData();
var data = {
header:{
token:"",
reqOrg:""
},
body :{
spaceClassId:
}
}
//fd.append('uploadFile', pic);
fd.append('file', pic);
fd.append('data', JSON.stringify(data)); //这里维持着是restful的形式
$.ajax({
url:'/resources/insertResources',
type:"post",
// Form数据
data: fd,
cache: false,
contentType: false, //不能用json了
processData: false,
success:function(data){
console.log("ddd")
}
});
后端(用@RequestParam("file")接受参数,不能用@RequestBoby接受字符穿,我的方案是传@RequestParam然后自己来转bean
@PostMapping("/insertResources")
@ResponseBody
public SuccessResponse<Object> insertResources(@RequestParam("file") MultipartFile file, @RequestParam("data") String dataRequest) {
DataRequest<SpaceClassHomework> spacePicDataRequest = JSON.parseObject(dataRequest, new TypeReference<DataRequest<SpaceClassHomework>>() {
});
resourcesService.insertResources(file, spacePicDataRequest.getBody());
return new SuccessResponse<Object>(null);
}
服务端 新的方法
file.transferTo(dest);
@Override
public void insertResources(MultipartFile file, SpaceClassHomework spaceClassHomework) {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
String filePath = uploadDir;
File dest = new File(filePath + fileName);
try {
file.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
log.error("文件上传失败");
}
spaceClassHomework.setSpaceClassFileName(fileName);
spaceClassHomework.setSpaceClassFilePath(filePath);
spaceClassHomeworkMapper.insertSelective(spaceClassHomework); }
下载
前端:影响不大
后端:
1,不能和平时一样,加@responseBody
2,浏览器输出名字的时候编码不是utf-8,但是java又是utf-8,所有我用
String fileNameTemp = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
设置两个变量,一个浏览器输出,一个在java操作
3,spring方法,
new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
@GetMapping("/getResources")
public ResponseEntity<byte[]> getSpaceClass(@RequestParam("spaceClassFileId") String spaceClassFileId
, HttpServletResponse resp) throws Exception {
String filePath = uploadDir;
//获得路径和文件名
String fileName = resourcesService.getResources(Long.parseLong(spaceClassFileId));
String fileNameTemp = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileNameTemp);
File file = new File(filePath + fileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
springboot上传下载文件的更多相关文章
- springboot整合vue实现上传下载文件
https://blog.csdn.net/yhhyhhyhhyhh/article/details/89888953 文章目录 springboot整合vue实现上传下载文件 1上传下载文件api文 ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- shell通过ftp实现上传/下载文件
直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
- C#实现http协议支持上传下载文件的GET、POST请求
C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...
随机推荐
- LA-4255 Guess (拓扑排序+构造)
题目大意:一个未知的整数序列,给出其任意一个区间和的正负,还原这个序列.任意一个满足条件的序列即可. 题目分析:将连续区间和转化为前缀和之差,sumx-1与sumy的大小关系已知,以此建立一条有向边, ...
- nyoj762——分解质因数+容斥+二分
第k个互质数 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 两个数的a,b的gcd为1,即a,b互质,现在给你一个数m,你知道与它互质的第k个数是多少吗?与m互质的 ...
- Java环境搭建---(基础)
首先下载eclipse开发工具,下载地址:http://www.eclipse.org/downloads/,界面如下: 选择eclipse juno(4.2)的版本进入界面 点击Downloads, ...
- 005PHP基础知识——数据类型(二)
<?php /** * 布尔型判断一种状态是否成立. * 布尔型 TRUE FALSE * 为布尔假型的类型: * 1. FALSE * 2. 0 * 3. 0.0 * 4. 空字符串为假 * ...
- bzoj2929
题解: 网络流裸题 代码: #include<cstdio> #include<cstring> #include<algorithm> #include<c ...
- hdu1507
题解: 二分图最大匹配 建边和第一题差不多 每两个相邻的建边 然后输出方案 代码: #include<cstring> #include<cmath> #include< ...
- js常用正则表达式,滚蛋吧!你们测试组bug,让你挑
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- C++面向对象高级编程(四)基础篇
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一.Static 二.模板类和模板函数 三.namespace 一.Static 静态成员是“类级别”的,也就是它和类的地位等同,而普通成员是“ ...
- linux 下 iscsi的简单使用
一.准备工作 1.1.(服务端和客户端都需要设置) 系统使用的是CentOS6.8 禁用防火墙: 查看状态:# service iptables status 停止:# systemctl sto ...
- 动态PIVOT行转列
id name subject score remark1 l math 86 2 l eng 68 3 l phy 88 4 z chn 99 5 z math 92 6 z com 98 7 z ...