1、放开上传限制

servlet:
multipart:
enabled: true #默认支持文件上传
max-file-size: -1 #不做限制
max-request-size: -1 #不做限制
2、设置上传地址
#上传地址
z:
url: http://127.0.0.1:9087/andon/file/
upload: /home/project/file/andon/fileUpload
#获取配置文件地址
@Value("${z.upload}")
private String fileUploadPath;

@Value("${z.url}")
private String fileUploadUrl;

#上传代码
@ApiOperation("8.0 附件_上传")
@PostMapping(value = "/upload")
public Result upload(@RequestParam("file") MultipartFile file,
HttpServletRequest req) throws IOException {
Map<String, Object> map = new HashMap<>();
try {
//文件上传
String hostAddress = InetAddress.getLocalHost().getHostAddress();//获取文件的名称
String filename = file.getOriginalFilename();
//上传的文件夹
String filePath = fileUploadPath;
java.io.File path = new java.io.File(filePath);
if (!path.exists()) {
path.mkdirs();
}
String uuid = IdUtil.simpleUUID();
String fileStr = filename.substring(filename.lastIndexOf("."));
String newFileName = uuid + fileStr;
//上传的文件
String rootFilePath = filePath + newFileName;
log.info("文件写入:" + rootFilePath);
//上传
FileUtil.writeBytes(file.getBytes(), rootFilePath);//使用Hutool工具包将我们接收到文件保存到rootFilePath中
log.info("文件写入成功!");
map.put("filename", filename);
map.put("path", fileUploadUrl + newFileName);
map.put("size", file.getSize());
map.put("loadPath",rootFilePath);
} catch (Exception e) {
log.info("文件上传失败:", e);
}
return Result.success(map);
}

#下载代码

@GetMapping("/{flag}")
@ApiOperation("8.1 附件_下载")
public void getFiles(@PathVariable String flag, HttpServletResponse response, HttpServletRequest req) {
OutputStream os;//新建一个输出流对象
String basePath = fileUploadPath;
List<String> fileNames = FileUtil.listFileNames(basePath);//获取所有的文件名称
String fileName = fileNames.stream().filter(name -> name.contains(flag)).findAny().orElse("");//找到跟参数一致的文件
try {
if (StrUtil.isNotEmpty(fileName)) {
java.io.File file = new java.io.File(basePath + fileName);
long length = file.length();
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setContentType("application/octet-stream");
response.addHeader("totalSize", String.valueOf(length));
response.setContentLengthLong(length);
byte[] bytes = FileUtil.readBytes(file);//通过文件的路径读取文件字节流
os = response.getOutputStream();//通过response的输出流返回文件
os.write(bytes);
os.flush();
os.close();
}
} catch (Exception e) {
log.info("文件下载失败:",e);
}

}

最新文章

  1. Druid初步学习
  2. netty4.0.x源码分析—bootstrap
  3. flask笔记---url、变量规则
  4. Linux 进程间通信(二) 管道
  5. 在eclipse中安装插件
  6. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构
  7. GPIO 配置之ODR, BSRR, BRR 详解
  8. OneAPM 技术公开课:北京,北京!
  9. c# sql连接数据库
  10. 关于npoi不能导入07以上版本的Excel
  11. iOS开发-OC语言 (五)字典
  12. CentOS 7安装redis及php扩展
  13. OJ题:字符串最后一个单词的长度
  14. (转载)JSON.stringfy()和JSON.parse()的作用
  15. vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版
  16. springBoot 全局异常捕捉
  17. Django 的认识,题型
  18. jzoj5950
  19. 亿级PV请求的三种负载均衡技术
  20. 【并查集】BZOJ4668-冷战

热门文章

  1. Android JetPack~ DataBinding(数据绑定)(一) 集成与使用
  2. 【TS】函数重载--可选参数--默认参数
  3. 安卓ro.serialno产生的整个流程
  4. 依那西普减量维持过程中RA病人自报病情复发可能预示未来放射学进展[EULAR2015_SAT0147]
  5. JZOJ 6664. 【2020.05.28省选模拟】最优化
  6. eclipse项目转idea项目
  7. Vue 非单文件组件(不常用)3步骤(创建、注册、使用)和几个注意点、组件的本质(VueComponent)
  8. vue学习笔记:vue.js基础语法
  9. lg8936题解
  10. ImportError: cannot import name &#39;six&#39; from &#39;django.utils&#39;的解决办法