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

上传下载接口

上传下载接口

    • 一、接口代码
    • 二、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.xdnf.cn/news/4118.html

相关文章:

  • Android第六次面试总结之Java设计模式(二)
  • vue3+ts+自定义指令,生产页面水印
  • 云计算训练营笔记day02(Linux、计算机网络、进制)
  • 论文速读《Embodied-R: 基于强化学习激活预训练模型具身空间推理能力》
  • STL之stackqueue
  • 【Vue.js】 插槽通信——具名插槽通信
  • 大模型在宫颈癌诊疗全流程预测与应用研究报告
  • 免费视频压缩软件
  • Paramiko 性能优化详解
  • 神经网络之互动练习详解:从基础到拟合非线性数据
  • 【回眸】QAC使用指南——导出 Dashboard Report个性化定制Report
  • NLP中词嵌入的几个方法介绍快速入门视频推荐
  • Adobe卸载清理工具Creative Cloud Cleaner Tool下载
  • C# Winforms 本地化 多语言支持 字符串资源
  • 【商城系统中的多商户和单商户模式差异】
  • 第22节:深度学习基础-损失函数介绍
  • 神经网络:节点、隐藏层与非线性学习
  • 【WPS】怎么解决“word的复制表格”粘贴到“excel的单元格”变多行单元格的问题
  • Suno v4.5:AI 音乐创作的新突破
  • PHP分页显示数据,在phpMyadmin中添加数据
  • window 显示驱动开发-线程同步和 TDR
  • 【Docker系列】使用格式化输出与排序技巧
  • 如何对 Redis 进行水平扩展和垂直扩展以应对微服务流量的增长?
  • 【ARM】DS-试用授权离线激活
  • 动手学深度学习12.1. 编译器和解释器-笔记练习(PyTorch)
  • Kubernetes环境部署OwnCloud网盘服务
  • 学苑教育杂志学苑教育杂志社学苑教育编辑部2025年第9期目录
  • 前端知识-hook
  • 荣耀A8互动娱乐组件部署实录(第4部分:房间服务端逻辑与玩家交互处理)
  • spring cloud gateway(网关)简介