我使用以下方式完成文件上传:
ServletContext servletContext = getServletContext();
String contextPath = servletContext.getRealPath(File.separator);
String path = contextPath + "\\uploads\\" + session.getAttribute("seusername");
System.out.println(path);
File file=new File(path);
if(!file.exists())
file.mkdirs();
Part filePart = request.getPart("uploadfile");
//return content type of the file
String type = filePart.getHeader("content-type");
//checking content type of file.
if (!type.equals("application/x-msdownload")) {
final String fileName = getFileName(filePart);
myfilename=fileName;
try {
EncriptFilename= aESCryp.encrypt(fileName);
System.out.println(EncriptFilename);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
OutputStream fout = null;
InputStream filecontent = null;
try {
fout = new FileOutputStream(new File(path + File.separator + fileName));
filecontent = filePart.getInputStream();
int read = 0;
final byte[] bytes = new byte[32 * 1024];
while ((read = filecontent.read(bytes)) != -1) {
fout.write(bytes, 0, read);
}
fout.flush();
fout.close();
} catch (Exception er) {
System.out.println("error:"+er.getMessage());
}
}
我上传的图片,pdf,doc文件,,,很好.. 在我的本地光盘文件夹上的文件位置之后。 D:\ JavaWorkspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp1 \ wtpwebapps \ File \ uploads \ user \ java_coffee_cup_logo1600.png
我的问题是...如何下载此文件,,, 我无法使用href链接下载..
答案 0 :(得分:0)
您的网络应用可以支持文件下载,基本上与您帖子中的Servlet
相反。
创建"下载" Servlet
,并配置映射到Servlet
中的web.xml
(或使用注释来定义映射)。此servlet的URL可能如下所示:
http://machine.com/my-app/download/my-file.jpg
在下载Servlet
中,查看请求网址以发现请求的文件名(my-file.jpg
),然后使用FileInputStream
打开并阅读my-file.jpg
。 request.getPathInfo()
可能会为您提供确定用户想要下载的文件所需的信息。请参阅javadoc for HttpServletRequest.getPathInfo()
.
请注意,my-file.jpg
可以存在于您想要的任何位置。您的Servlet
可以将请求URL中的文件名和路径映射到本地文件系统上的任意位置。该文件甚至可以存在于另一个Web服务器上。您只需要能够创建一个访问该文件的InputStream
。
使用此路径信息,创建FileInputStream
以访问该文件。然后将FileInputStream
复制到ServletResponse
的输出流。此SO post和此SO post举例说明如何将InputStream
复制到OutputStream
。
您可以像这样获得响应的输出流:response.getOutputStream()
。完成后不要忘记关闭InputStream
和OutputStream
。