上传下载接口
上传下载接口
- 一、接口代码
- 二、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选择想要上传的文件;