gpt4 book ai didi

java - 从 java servlet 下载时文件损坏

转载 作者:行者123 更新时间:2023-12-01 19:50:39 28 4
gpt4 key购买 nike

我在 servlet 中有一个进程,用于创建 .pdf 文件并将其发送到客户端。但是,Adobe 不会打开下载的文件(“打开此文档时出错。文件已损坏且无法修复。”)。驻留在服务器上的原始创建的文件很好,Adobe 打开它没有问题。

我的代码:

private static void sendFile(HttpServletResponse response, String pdfPath) throws FileNotFoundException, IOException {
PrintWriter out = response.getWriter();
File f = new File(pdfPath);

response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition", "attachment; filename=\"" + f.getName());
response.setContentLength((int) f.length());

response.setContentType("application/pdf");

FileInputStream fileInputStream = new FileInputStream(pdfPath);

int i;
while ((i = fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
}

最佳答案

Writer 写入字符,而不是字节。

使用响应输出流

并且不要逐字节读取和写入,尤其是从 FileInputStream 读取和写入。这是极其低效的。只需使用 Files.copy() .

关于java - 从 java servlet 下载时文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410383/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com