SpringBoot文件上传下载

本文介绍了SpringBoot中如何实现文件的上传和下载操作。详细步骤包括上传时的POST请求设置,Content-Type为multipart/form-data,Body以form-data形式添加File类型参数,以及成功返回的确认信息。下载部分则涉及到相关实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、上传文件

@RestController
@RequestMapping("/file")
public class FileUploadController {

   /**
    * 对于上载文件,要将MultipartFile用作请求参数,
    * @param file
    * @return
    * @throws IOException
    */
    @RequestMapping(value = "/upload", method = RequestMethod.POST,
            consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
   public String fileUpload(@RequestParam("file") MultipartFile file) throws IOException {
      // 上传的路径
      File convertFile = new File("/home/user/temp/"+file.getOriginalFilename());
      convertFile.createNewFile();
      FileOutputStream fout = new FileOutputStream(convertFile);
      fout.write(file.getBytes());
      fout.close();
      return "File is upload successfully";
   }
}

2、下载文件

    /**
    * 对于文件下载,应该使用InputStreamResource下载文件。
    * 需要在Response中设置HttpHeader Content-Disposition,并且需要指定应用程序的响应Media Type。
    * @return
    * @throws IOException
    */
   @RequestMapping(value = "/download", method = RequestMethod.GET)
   public ResponseEntity<Object> downloadFile() throws IOException  {
      // 下载的目标文件
      String filename = "/home/user/temp/exceldata.png";
      File file = new File(filename);
      InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
      HttpHeaders headers = new HttpHeaders();

      headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getName()));
      headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
      headers.add("Pragma", "no-cache");
      headers.add("Expires", "0");

      ResponseEntity<Object>
      responseEntity = ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(
         MediaType.parseMediaType("application/txt")).body(resource);

      return responseEntity;
   }

3、测试

  • 上传

a、设置POST请求,Header的Content-Type为multipart/form-data

b、设置Body为form-data,然后添加File类型的key:file,选择要上传的文件

c、发送请求--返回"File is upload successfully"

  • 下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值