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 ...
随机推荐
- Struts2异常处理配置
<package name="lee" extends="struts-default"> <!--定义全局结构映射 --> <g ...
- windows下使用selenium报错selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH
问题 :执行程序代码报错: WebDriverException:Message:'geckodriver'executable needs to be in Path 或者 selenium.com ...
- Nginx禁止域名恶意解析
今天打开网站发现访客人数突增啊,不对啊,小站哪来这么多的访问量呢?打开百度统计,看到有其他的域名解析到我的IP,心中很不爽啊.遂搜索之,才有了此篇文章. 打开Nginx配置文件/etc/nginx/s ...
- CSS技巧和经验
如何清除图片下方出现几像素的空白间隙 方法1 img { display: block; } 方法2 除了top值,还可以设置为text-top | middle | bottom | text-bo ...
- jquery基础 笔记三
一. 操作"DOM属性" 在jQuery中没有包装操作"DOM属性"的函数, 因为使用javascript获取和设置"DOM属性"都很简单. ...
- 十四、dbms_obfuscation_toolkit(用于加密和解密应用数据)
1.概述 作用:用于加密和解密应用数据,另外还可以生成密码检验和.通过加密输入数据,可以防止黑客或其他用户窃取私有数据;而通过结合使用加密和密码检验和,可以防止黑客破坏初加密的数据.当使用该包加密数据 ...
- Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)
Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...
- 快速求排列组合 lucas定理
对于C(n, m) mod p.这里的n,m,p(p为素数)都很大的情况. 就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了. 一般lucas定理的p ...
- hdu 5800 To My Girlfriend(背包变形)
To My Girlfriend Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- LeetCode OJ:Ugly Number II(丑数II)
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...