| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.io.OutputStream; |
| | | import java.io.*; |
| | | import java.net.URLEncoder; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.nio.file.Files; |
| | | import java.util.HashMap; |
| | | import java.util.UUID; |
| | |
| | | throw new RuntimeException("æä»¶ä¸åå¨"); |
| | | } |
| | | |
| | | // 读åæä»¶å
容 |
| | | byte[] fileContent = Files.readAllBytes(file.toPath()); |
| | | |
| | | // 设置ååºå¤´ |
| | | response.setHeader("Content-Disposition", "attachment; filename=" + fileName); |
| | | String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()); |
| | | response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); |
| | | response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); |
| | | response.setContentLengthLong(file.length()); // 设置æä»¶å¤§å°ï¼ä¾¿äºæµè§å¨æ¾ç¤ºè¿åº¦ |
| | | |
| | | // å°æä»¶å
容åå
¥ååºè¾åºæµ |
| | | response.getOutputStream().write(fileContent); |
| | | response.getOutputStream().flush(); |
| | | |
| | | // æµå¼ä¼ è¾ï¼ä½¿ç¨ç¼å²æµåå读åï¼é¿å
䏿¬¡æ§å è½½æ´ä¸ªæä»¶å°å
å |
| | | try (InputStream in = new BufferedInputStream(new FileInputStream(file)); |
| | | OutputStream out = new BufferedOutputStream(response.getOutputStream())) { |
| | | |
| | | byte[] buffer = new byte[8192]; // 8KBç¼å²åº |
| | | int len; |
| | | // 循ç¯è¯»åæä»¶å
å®¹ï¼æ¯æ¬¡è¯»8KBï¼åå
¥ååºè¾åºæµ |
| | | while ((len = in.read(buffer)) != -1) { |
| | | out.write(buffer, 0, len); |
| | | } |
| | | out.flush(); // ç¡®ä¿æåä¸é¨åæ°æ®è¢«ååº |
| | | } catch (IOException e) { |
| | | throw new RuntimeException("æä»¶ä¸è½½å¤±è´¥", e); |
| | | } |
| | | |
| | | |
| | | // // 读åæä»¶å
容 |
| | | // byte[] fileContent = Files.readAllBytes(file.toPath()); |
| | | // |
| | | // // 设置ååºå¤´ |
| | | // response.setHeader("Content-Disposition", "attachment; filename=" + fileName); |
| | | // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); |
| | | // |
| | | // |
| | | // |
| | | // // å°æä»¶å
容åå
¥ååºè¾åºæµ |
| | | // response.getOutputStream().write(fileContent); |
| | | // response.getOutputStream().flush(); |
| | | } |
| | | |
| | | } |