当前位置: 首页 > 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选择想要上传的文件;

相关文章:

  • 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 部署实战
  • 农行原首席专家兼浙江省分行原行长冯建龙主动投案被查
  • 同观·德国|默茨当总理后,能否带领德国在欧盟“说了算”?
  • 新闻1+1丨多地政府食堂开放 “舌尖上的服务”,反映出怎样的理念转变?
  • 跳水世界杯总决赛陈佳获得女子3米板冠军,陈艺文获得亚军
  • 大一女生头孢过敏输液室呼救无医护响应,自行拔针仍不幸身亡
  • 单阶段遭遇零封偶像奥沙利文,赵心童要让丁俊晖预言成真