[英]java download a file sourced from a database to PC
I am getting an image (jpeg or pdf) from a database and want to download it to the PC.我从数据库中获取图像(jpeg 或 pdf)并希望将其下载到 PC。 However, the image is not recognised at .file.exists()
.但是,在.file.exists()
无法识别图像。 This points to File file = new File(resourceDetail.getResourseImage());
这指向File file = new File(resourceDetail.getResourseImage());
being incorrect.不正确。 What is the correct way to code this please?请问这个编码的正确方法是什么?
Note: resourceDetail.getResourseImage()
is the actual image not a path.注意: resourceDetail.getResourseImage()
是实际图像而不是路径。
My code is:我的代码是:
resourceDetail = MySQLConnection.resourceDownload(fileID);
FileInputStream stream = null;
try {
File file = new File(resourceDetail.getResourseImage());
System.out.println("resourceDetail.getResourseImage(): " + resourceDetail.getResourseImage());
if (!file.exists()) {
System.out.println("File does not exist: ");
// context.addMessage(new ErrorMessage("msg.file.notdownloaded"));
// context.setForwardName("failure");
} else {
System.out.println("File exist: ");
if (resourceDetail.getResourseImageType().equals("pdf")){
System.out.println("pdf: ");
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename='myfile.pdf'");
}else{
System.out.println("jpeg: ");
response.setContentType("image/jpeg");
response.setHeader("Content-Disposition", "attachment; filename='myfile.jpg'");
}
// response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
System.out.println("stream: ");
stream = new FileInputStream(file);
response.setContentLength(stream.available());
OutputStream os = response.getOutputStream();
os.close();
response.flushBuffer();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
resourceDetail.getResourseImage()
got string data, you can directly write the data to response by using: OuputStream#write(bytes)
. resourceDetail.getResourseImage()
得到字符串数据,你可以直接将数据写入响应,使用: OuputStream#write(bytes)
。 In you case, just use ·os.write(resourceDetail.getResourseImage().getByets());` to do this.在您的情况下,只需使用 ·os.write(resourceDetail.getResourceImage().getByets());` 来执行此操作。
The Sample code:示例代码:
resourceDetail = MySQLConnection.resourceDownload(fileID);
try {
System.out.println(
"resourceDetail.getResourseImage(): " + resourceDetail.getResourseImage());
if (resourceDetail.getResourseImageType().equals("pdf")) {
System.out.println("pdf: ");
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename='myfile.pdf'");
} else {
System.out.println("jpeg: ");
response.setContentType("image/jpeg");
response.setHeader("Content-Disposition", "attachment; filename='myfile.jpg'");
}
response.setContentLength(resourceDetail.getResourseImage().length());
OutputStream os = response.getOutputStream();
os.write(resourceDetail.getResourseImage().getBytes());
os.close();
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
While this solution does not directly answer the issue with java it does give me a solution.虽然这个解决方案没有直接回答 java 的问题,但它确实给了我一个解决方案。 I started with using jQuery which worked with Chrome and not IE.我开始使用适用于 Chrome 而不是 IE 的 jQuery。 I was told it was not possible to active downloading images with jQuery and that I needed to do it via java.有人告诉我,无法使用 jQuery 主动下载图像,我需要通过 java 进行下载。 However, I have now found:但是,我现在发现:
http://danml.com/download.html http://danml.com/download.html
Kind regards,亲切的问候,
Glyn格林
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.