应用台导航页
  • 主页
  • 博客
  • 知识库
  • 工作台
  • 集萃
  • 友链
  • 关于
spring MVC 上传图片 & 压缩和解压缩

spring MVC 上传图片 & 压缩和解压缩

应试
更新于 2023-04-17
— 1399 字
返回

结合 Spring MVC controller 接收上传文件的示例代码:

java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.concurrent.CompletableFuture;
@Controller
public class FileUploadController {
private static final String UPLOAD_DIRECTORY = "uploads";
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
String fileName = file.getOriginalFilename();
String filePath = request.getServletContext().getRealPath("/") + "\\" + UPLOAD_DIRECTORY + "\\" + fileName;
File targetFile = new File(filePath);
try {
file.transferTo(targetFile); // 保存上传文件
} catch (IOException ex) {
ex.printStackTrace();
return "上传文件失败";
}
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
unzip(targetFile); // 解压缩上传文件
} catch (IOException e) {
e.printStackTrace();
}
});
future.thenRunAsync(() -> {
try {
storeImages(); // 存储解压后的图片
} catch (IOException e) {
e.printStackTrace();
}
});
return "上传成功";
}
private static void unzip(File file) throws IOException {
// 解压缩文件
}
private static void storeImages() throws IOException {
// 存储解压后的图片
}
}
  1. 使用Spring MVC 提供的注解 @RequestParam 用来接收上传的压缩包文件,其中 handleFileUpload 方法返回的字符串即为上传成功或失败的提示信息。
  2. 得到上传文件后,调用 transferTo 方法将上传的文件保存到服务器的指定文件夹中。
  3. 使用 CompletableFuture 同步解压和存储文件操作,使用 thenRunAsync 方法将存储操作提交到另一个新线程中执行。
    • 解压缩过程中,使用 unzip 方法解压缩文件
    • 存储操作中,我们使用 storeImages 存储解压后的图片。

需要注意的是,这里我们使用了两个异步操作,因此需要保证它们异步执行的顺序,确保解压缩完成后再进行存储操作。

dors logoDors

Dors 是花野猫开发为知识工作者打造的数字花园应用,包含的博客、个人记事本、及其他实用功能。

花园

  • 花坛——博客
  • 果园——知识库

工坊——作者开发的实用工具

  • 小记
  • 秒切——一键按秒分割视频
  • 中国重点高校地理位置可视化网站
  • 中国行政区划数据查询平台
  • excel 重命名工具

misc

  • 生活章程
  • 画廊
  • just have fun!

© 2022 - present. All Rights Reserved.滇ICP备2025063395号-1

花野猫打造