2011-05-19 85 views
1

我使用jsp servlet来上传和下载文件。下载多种文件类型

我想下载多种类型的文件,所以我选择将它们下载为zip文件,以便不会在响应中定义每种类型的附件,当我上传正确上传的所有文件时为txt和docx文件下载它们也正确下载,但是当我下载pdf或图像文件时,它们没有正确下载,因为我将它们放在同一个文件夹中!

+0

咦?什么是问题?你的背景是什么?从什么下载?用什么? – Kaj 2011-05-19 14:27:15

+0

.. Java?从岛上下载? – 2011-05-19 14:28:19

+0

不使用servlet进行下载。 – palAlaa 2011-05-19 14:32:06

回答

3

当我进行下载TXT和docx文件它们正确下载过,但是当我下载PDF文件,图像文件,这些文件没有正确下载

事实:.txt.docx(XML !)文件是基于文本而PDF和图像是二进制基于。

所以,这听起来很像您使用Reader/Writer而不是InputStream/OutputStream来读/写文件。

相应地修复代码。只要你对字符的实际文件内容不感兴趣,就不要使用Reader/Writer。它会完全破坏二进制文件。你可以找到一个下载servlet的基本例子here

+0

如果我存储有关该文件的所有内容,它的名称,长度和contentType,博客中的示例工作得很好,因此我可以在一个说明中获得所有内容File file = fileDAO.find(fileId); 但在一个案例中,我不知道任何事情,而不是路径,我不知道附件的类型,所以我下载所有文件为zip。 – palAlaa 2011-05-19 14:46:41

+0

这只是一个基本的例子,男人:)你可以自由地编辑代码来满足你的需求。您可以使用'ServletContext#getMimeType()'按照第一个servlet示例的文件扩展名获取内容类型。使用'fileDAO'的第二个servlet示例假定您已将整个文件存储在数据库中而不是磁盘上。然而,你已经在磁盘上存储了这个文件。内容长度可以通过'File#length()'获得。另见http://stackoverflow.com/questions/2244521和http://stackoverflow.com/questions/2000587 – BalusC 2011-05-19 15:00:23