在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上传下载文件的更多相关文章

  1. springboot整合vue实现上传下载文件

    https://blog.csdn.net/yhhyhhyhhyhh/article/details/89888953 文章目录 springboot整合vue实现上传下载文件 1上传下载文件api文 ...

  2. rz和sz上传下载文件工具lrzsz

    ######################### rz和sz上传下载文件工具lrzsz ####################################################### ...

  3. linux上很方便的上传下载文件工具rz和sz

    linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...

  4. shell通过ftp实现上传/下载文件

    直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...

  5. SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...

  6. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  7. C#实现http协议支持上传下载文件的GET、POST请求

    C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...

  8. HttpClient上传下载文件

    HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...

  9. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...

随机推荐

  1. 3.java内存模型以及happens-before规则

    1. JMM的介绍 在上一篇文章中总结了线程的状态转换和一些基本操作,对多线程已经有一点基本的认识了,如果多线程编程只有这么简单,那我们就不必费劲周折的去学习它了.在多线程中稍微不注意就会出现线程安全 ...

  2. Spring源码解析-IOC容器的实现-ApplicationContext

    上面我们已经知道了IOC的建立的基本步骤了,我们就可以用编码的方式和IOC容器进行建立过程了.其实Spring已经为我们提供了很多实现,想必上面的简单扩展,如XMLBeanFacroty等.我们一般是 ...

  3. C++复习7.虚表的概念

    C++ 类的虚表 20130929 关键技术:封装.继承.组合.虚函数.抽象基类.动态绑定.多态性等等 1.首先整理一下在阿里巴巴面试遇到的函数虚表的问题. 在C++中的Class中的函数式存储在Cl ...

  4. log4cpp之Category

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  5. javascript 事件委托 event delegation

    事件委托 event delegation 一.概念: 假设我们有很多个子元素,每个元素被点击时都会触发相应事件,普通的做法是给每个子元素添加一个事件监听. 而,事件委托则是给它们的父元素添加一个事件 ...

  6. 【前端安全】 web前端安全编码(模版篇)【转】

    在web的开发的开发过程中,前端总是在处理后端打的各种变量,变量可以包含着中的各种各样的字符,如果不对这些字符进行”特殊“处理的话,轻者导 致页面不正常的显示,潜入了其他的东西,亦即页面挂了,或者弹出 ...

  7. python 获取当前时间(关于time()时间问题的重要补充)

    python 获取当前时间   我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这 ...

  8. Express 开发与部署最佳实践 -- 待续

    链接 nginx 代理缓存  压缩 等 全部采用异步 使用try catch  处理同步异常  promise 处理异步 异常,  而不是使用 domains  或者 uncaughtExceptio ...

  9. java正则匹配多个子字符串样例

    文本内容: 上海市黄浦区瑞典江苏省无锡市广东省深圳市南山区 我希望分别将字符串中的省份,城市名,城区名匹配出来,如匹配不出来就默认放在省份中. public static HashMap<Str ...

  10. Premake 生成 Makefile 的缺省配置

    Premake 生成 Makefile 的缺省配置(金庆的专栏 2017.7)premake5.exe --os=linux gmake生成的 Makefile 中有个 config, 用 make ...