SpringBoot的文件上传&下载

前言:不多BB直接上代码


文件上传

pom依赖添加commons-io

<!-- 上传/下载jar https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.4</version>
</dependency>

java代码:

/**
 * 上传使用PostMapping了, url带了一个id和子资源photos
    consumes: 消耗、消费
    表示指定Request附带的数据为MULTIPART_FORM_DATA形式(文件上传就是这样的)
 * @param id 表示我要给某个id的某种资源上传图片
 * @param imgFile 图片本身
 * @throws Exception
 */
@PostMapping(value = "/{id}/photos", consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
public void addPhoto(@PathVariable int id, @RequestParam("photo")MultipartFile imgFile) throws Exception{
    log.info("接收到文件 " + id + "收到文件: " + imgFile.getOriginalFilename());
    // 保存文件
    FileOutputStream fos = new FileOutputStream("target/" + imgFile.getOriginalFilename());
    IOUtils.copy(imgFile.getInputStream(), fos);
    fos.close();
}

测试:

Send后PostMan没有回执,但控制台给了打印信息

打开对应上传目录后, 发现文件已经上传成功


文件下载

java代码:

/**
 * 下载使用GetMapping
 * produces: 指定输出格式为GIF图片(你们也可以自己改啦)
 * @param id 表示我要取某id下的某个资源
 * @return
 * @throws Exception
 */
@GetMapping(value = "/{id}/icon", produces=MediaType.IMAGE_GIF_VALUE)
public byte[] getIcon(@PathVariable int id) throws Exception{
    log.info("getIcon( " + id + " )");
    // 取此路径下的icon.gif文件
    String iconFile = "src/test/resources/icon.gif";
    InputStream is = new FileInputStream(iconFile);
    return IOUtils.toByteArray(is);
}

就直接用PostMan测试了(用浏览器结果也一样,我试过啦,就不截图了)

原文地址:https://www.cnblogs.com/zilongmao/p/10264977.html