Commit b58e6b93 by Jony.L

发票预览

parent 3a0a1c0e
......@@ -31,6 +31,9 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
......@@ -129,20 +132,20 @@ public class FileController {
@Operation(summary = "PDF 文件预览")
@PermitAll
public void previewPdf(HttpServletResponse response, String url) throws IOException {
File file = new File(url);
if (!file.exists()) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
if (url == null || url.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
// 设置响应头(浏览器内嵌预览)
response.setContentType("application/pdf");
// inline 表示浏览器内嵌预览,attachment 表示下载
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 避免缓存
response.setHeader("Content-Disposition", "inline; filename=\"" + URLEncoder.encode("preview.pdf", StandardCharsets.UTF_8.name()) + "\"");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
try (InputStream inputStream = new FileInputStream(file);
// 用 HttpURLConnection 读取远程 PDF 流
try (InputStream inputStream = new URL(url).openStream();
OutputStream os = response.getOutputStream()) {
byte[] buffer = new byte[8192];
int bytesRead;
......@@ -150,6 +153,8 @@ public class FileController {
os.write(buffer, 0, bytesRead);
}
os.flush();
} catch (IOException e) {
response.setStatus(HttpServletResponse.SC_BAD_GATEWAY); // 502,云端文件无法访问
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment