gpt4 book ai didi

java - 需要一个 servlet 从/home/Bureau 等路径下载文件

转载 作者:行者123 更新时间:2023-12-01 13:08:12 25 4
gpt4 key购买 nike

需要一个servlet从jee gwt中的/home/Bureau..等路径下载文件我用过这个但不起作用我去下载所有文件类型的图像

 String filePath = request.getParameter("file");
String fileName = "test";
FileInputStream fileToDownload = new FileInputStream(filePath);
// ServletOutputStream output = response.getOutputStream();
response.setHeader("Content-Type", "image/png");
//response.setContentType("image/png");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".png\"");
// response.setContentLength(fileToDownload.available());

int readBytes = 0;
byte[] buffer = new byte[10000];
while ((readBytes = fileToDownload.read(buffer, 0, 10000)) != -1) {
//output.write(readBytes);
response.getOutputStream().write(readBytes);
}

response.getOutputStream().close();
fileToDownload.close();
fileToDownload.close();

最佳答案

问题出在下面一行,您写入的字节数不是实际字节。这里 readBytes 表示一次读取的字节数,而 buffer 包含读取的实际字节。

response.getOutputStream().write(readBytes);
<小时/>

尝试

OutputStream outputStream = response.getOutputStream();

while ((readBytes = fileToDownload.read(buffer)) != -1) {
outputStream.write(buffer,0,readBytes);
}

outputStream.close();
<小时/>

我建议您单次调用response.getOutputStream()

如果文件大小由于以下行而小于 10000 字节,您的代码将给出 IndexOutOfBoundsException

 fileToDownload.read(buffer, 0, 10000)

更改为

fileToDownload.read(buffer)
<小时/>

使用ServletContext获取文件路径。

ServletContext context = getServletContext();

有关更多信息,请查看以下帖子:

Writing image to servlet response with best performance .

How do I return an image from a servlet using ImageIO?

关于java - 需要一个 servlet 从/home/Bureau 等路径下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110475/

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