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 ...
随机推荐
- nginx模块记录
1. ngx_http_ssl_module 让Nginx可以支持HTTPS的模块 (1)ssl on | off; #是否开启ssl功能 (2)ssl_certificate file; #当前虚拟 ...
- vue 跨域
注意!只能在本地调试使用,上线后url会出错使用以下方法要先引入网络模块 先配置文件:config =>index.js以下部分改为:proxyTable: { '/apis': { // 测试 ...
- ftp的匿名用户的搭建
在搭建之前需要server端安装vsftpd用yum装就好,客户端直接装ftp就ok yum装的vsftpd直接就有共享目录,在/var/ftp/pub 目录,看下目录,给他降权,将属主,属组改为ft ...
- TStringHelper.Split
作为对泛型的支持,TStringHelper.Split方法理所应当地出现了. 示例代码1: var iText: string; iAStr: TArray<string>; I: ...
- zookeeper数据一致性与paxos算法
数据一致性与paxos算法 据说Paxos算法的难理解与算法的知名度一样令人敬仰,所以我们先看如何保持数据的一致性,这里有个原则就是: 在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执 ...
- Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议
Django框架的服务器架构一般是 Nginx + uWSGI + Django (1)一些基本概念 1 WSGI协议,uwsgi协议 WSGI协议(通讯协议):Python用于Web开发的协议(用于 ...
- final方法,abstract方法和abstract类,native方法
final方法 1.为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖(override),可以使用final方法. 2.为了效率上的考虑,将方法声明为final,让编译器对此方法的调用进行优 ...
- v-if和v-show小对比
相同点 都可以控制元素的显示与不显示.在判断DOM节点是否要显示. 不同点 1.实现方式 v-if是根据后面的数据的真假判断直接从DOM树上删除或重建元素节点. v-show 只是修改元素的css的样 ...
- jq的attr、prop和data区别
prop()获取在匹配的元素集中的第一个元素的属性值. 大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled", ...
- linux下端口被占用
1.查看端口 netstat -ano 参数含义: -a, --all 显示监听或非监听状态的接口 Show both listening and non-listening (for TCP t ...