当前位置: 首页 > news >正文

上传下载接口

上传下载接口

    • 一、接口代码
    • 二、PostMan测试

一、接口代码

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;@RestController
public class FileController {private static final String filePath = System.getProperty("user.dir")+"/file/";//上传@RequestMapping(value = "/upload")@ResponseBodypublic Boolean upload(MultipartFile file) {String flag = System.currentTimeMillis() + "";String fileName = file.getOriginalFilename();try {if(FileUtil.isDirectory(filePath)){FileUtil.mkdir(filePath);}FileUtil.writeBytes(file.getBytes(), filePath + flag + "-" + fileName);System.out.println(fileName + "--上传成功");}catch (Exception e){System.out.println(fileName + "--上传成功");}return true;}//下载@GetMapping(value = "/download/{flag}")public void download(@PathVariable String flag, HttpServletResponse response) {if(!FileUtil.isDirectory(filePath)){FileUtil.mkdir(filePath);}OutputStream os;List<String> fileNames = FileUtil.listFileNames(filePath);String avatar = fileNames.stream().filter(name -> name.contains(flag)).findAny().orElse("");try{if(StrUtil.isNotEmpty(avatar)){response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(avatar, "UTF-8"));response.setContentType("application/octet-stream");byte[] bytes = FileUtil.readBytes(filePath + avatar);os = response.getOutputStream();os.write(bytes);os.flush();os.close();}} catch (Exception e) {System.out.println("文件下载失败");}}
}

二、PostMan测试

1.在headers中添加键值对,key为Content-Type,value为multipart/form-data;
2.在body项中选择form-data,key为file,value选择想要上传的文件;

http://www.dtcms.com/a/174113.html

相关文章:

  • 02 mysql 管理(Windows版)
  • vue3+element plus实现甘特图效果
  • 接口自动化工具如何选择?以及实战介绍
  • 生成式人工智能技术在高校心理健康服务中的应用; 希尔的三阶段助人理论:探索、领悟和行动
  • PHP分页显示数据,在phpMyadmin中添加数据
  • 深入理解高性能网络通信:从内核源码到云原生实践
  • 云原生 MySQL 架构:从容器化到 Serverless
  • Golang领域Beego框架的中间件开发实战
  • 互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-2
  • OrangePi Zero 3学习笔记(Android篇)1 - 搭建环境
  • Nyx-1 思路整理
  • 系统学习算法:动态规划(斐波那契+路径问题)
  • app根据蓝牙名字不同,匹配不同的产品型号,显示对应的UI界面
  • RHCSA Linux系统 网络管理
  • 深入理解West:介绍、使用及与Repo的对比
  • Linux之基础开发工具二(makefile,git,gdb)
  • vue3 报错
  • Python爬虫(19)Python爬虫破局动态页面:逆向工程与无头浏览器全链路解析(从原理到企业级实战)
  • Prometheus的安装部署
  • Nginx 安全防护与Https 部署实战
  • nnUNet V2修改网络——暴力替换网络为Swin-Unet
  • Windows远程连接MySQL报错,本地navicat能连接MySQL
  • 解决 Open WebUI 网络搜索错误:`NameResolutionError`
  • Windows11下通过Docker安装mysql8.0
  • 科学养身指南:600 字开启健康生活
  • day008-文件属性专题
  • 前端知识-hook
  • 深度学习系统学习系列【6】之深度学习技巧
  • css3伸缩盒模型第二章(侧轴相关)
  • go 编译报错:build constraints exclude all Go files