阅读背景:

如何将文件或者图片压缩成zip文件压缩包

来源:互联网 
代码: @RestController @RequestMapping("/download") public class DownloadController { @GetMapping("/studentWork") public ResponseEntity<StreamingResponseBody> downloadStudentWork() { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); String encodedFileName = "作品名称-学生姓名.zip"; // StringBuffer stringBuffer = new StringBuffer(); // stringBuffer.append("作品名称"+"-学生姓名.zip"); // try { encodedFileName = URLEncoder.encode(encodedFileName, StandardCharsets.UTF_8.toString()); System.out.println(encodedFileName); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } headers.setContentDispositionFormData("attachment", encodedFileName); StreamingResponseBody responseBody = outputStream -> { try (ZipOutputStream zipOut = new ZipOutputStream(outputStream)) { // 假设这是学生的作品海报图片文件流 InputStream imgStream = getStudentPosterData(); addToZip(zipOut, imgStream, "作品封面.jpg"); // 添加更多附件,如果有的话 zipOut.finish(); } catch (IOException e) { // 处理异常 } }; return new ResponseEntity<>(responseBody, headers, HttpStatus.OK); } private void addToZip(ZipOutputStream zipOut, InputStream inputStream, String fileName) throws IOException { ZipEntry zipEntry = new ZipEntry(fileName); zipOut.putNextEntry(zipEntry); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { zipOut.write(buffer, 0, bytesRead); } zipOut.closeEntry(); inputStream.close(); } // 获取学生作品海报图片数据的示例方法 private InputStream getStudentPosterData() throws FileNotFoundException { FileInputStream inputStream = new FileInputStream("C:\Users\admin\Pictures\Saved Pictures\微信图片_20230914093742.png"); String filePath = "C:\Users\admin\Pictures\Saved Pictures\微信图片_20230914093742.png"; File file = new File(filePath); if (file.exists()){ System.out.println("文件存在"); }else { throw new RuntimeException(); } return inputStream; } 示例: 代码: @RestController @RequestMapping("/download")



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: