修补丢失的代码文件

master
Guo XIn 1 year ago
parent 7419289519
commit df27ca9d83
  1. 50
      shandan-common/src/main/java/com/keyware/shandan/common/util/FileDownload.java

@ -0,0 +1,50 @@
package com.keyware.shandan.common.util;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
public class FileDownload {
public static String download(HttpServletResponse response, File file, boolean deleteFile) {
return download(response, file, file.getName(), deleteFile);
}
public static String download(HttpServletResponse response, File file, String fileName) {
return download(response, file, fileName, false);
}
public static String download(HttpServletResponse response, File file, String fileName, boolean deleteFile) {
try (BufferedInputStream bis = new BufferedInputStream(Files.newInputStream(file.toPath()));
OutputStream out = response.getOutputStream()) {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
byte[] fileNameBytes = fileName.getBytes(StandardCharsets.UTF_8);
response.setHeader("Content-disposition", "attachment;filename=" + new String(fileNameBytes, 0, fileNameBytes.length, StandardCharsets.ISO_8859_1));
byte[] buffer = new byte[1024]; // 缓冲区
int bytesToRead = 0;
// 通过循环将读入的Word文件的内容输出到浏览器中
while ((bytesToRead = bis.read(buffer)) != -1) {
out.write(buffer, 0, bytesToRead);
out.flush();
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (deleteFile) {
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
file.deleteOnExit();
}
}
return "download success";
}
}