通过程序实现文件下载更名,动态文件下载
2012-08-02 11:44
393 查看
在做DIY项目的时候,要实现一个下载业务,由于服务器资源有限,所以需要隐藏下载文件地址,在下载的时候还要更改保存文件的名字,比如我保存到服务器的文件名是2008_7_8_xfire.rar ,数据可以中关于该文件还有一个文件描述,比如该文件的描述名字为XFIRE.
在页面,下载连接中该文件的真实地址要隐藏,并且要将2008_7_8_xfire.rar替换成XFIRE.rar,要实现这种操作,可以使用文件转发功能...
步骤如下:
1)调用HttpServletResponse的.setContentType方法设置Content-Type头字段的值为浏览器无法使用某种方式或激活某个程序来处理的MIME类型,例如:"application/octet-stream"或application/x-msdownload 等
2)通过HttpServletResponse的setHeader方法设置Content-Disposition头的值为“attachment;filename=文件名”
代码如下:
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment; filename=\""+java.net.URLEncoder.encode("上网DIY.rar", "UTF-8")+"\"");
request.getRequestDispatcher("2008_7_8_diy.rar").forward(request,response);
代码中:filename属性使用了字符转换,这样可以解决下载文件中文名的问题..
上网DIY.rar是我要输出(下载)的文件名,2008_7_8_diy.rar是保存在服务器真实的文件名字.在这里就实现了文件的转发,并且更改文件的下载名字.但是要实现此业务的时候,我还想着通过程序读出文件,然后再输出到客户端来实现名字转换,现在想起来觉得好傻,服务器已经不堪负荷了...(一台服务器放了10几个网站...郁闷...而且此项目还提供大文件的上传...如果用程序输出,我怕系统隔几分钟就死一次了...)....
下面实现动态文件下载--动态文件指该文件实际并不存在,是内存中的数据,然后输出成具体文件:
内容应该当二进制来处理,所以应该调用HttpServletResponse的getOutputStream方法返回的ServletOutputStream对象来向客户端写入文件内容。
代码如下:
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment;filename=hello.txt");
ServletOutputStream sos=response.getOutputStream();
sos.write("hello kids".getBytes());
sos.close();
输出文件为hello.txt 内容为hello kids
在页面,下载连接中该文件的真实地址要隐藏,并且要将2008_7_8_xfire.rar替换成XFIRE.rar,要实现这种操作,可以使用文件转发功能...
步骤如下:
1)调用HttpServletResponse的.setContentType方法设置Content-Type头字段的值为浏览器无法使用某种方式或激活某个程序来处理的MIME类型,例如:"application/octet-stream"或application/x-msdownload 等
2)通过HttpServletResponse的setHeader方法设置Content-Disposition头的值为“attachment;filename=文件名”
代码如下:
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment; filename=\""+java.net.URLEncoder.encode("上网DIY.rar", "UTF-8")+"\"");
request.getRequestDispatcher("2008_7_8_diy.rar").forward(request,response);
代码中:filename属性使用了字符转换,这样可以解决下载文件中文名的问题..
上网DIY.rar是我要输出(下载)的文件名,2008_7_8_diy.rar是保存在服务器真实的文件名字.在这里就实现了文件的转发,并且更改文件的下载名字.但是要实现此业务的时候,我还想着通过程序读出文件,然后再输出到客户端来实现名字转换,现在想起来觉得好傻,服务器已经不堪负荷了...(一台服务器放了10几个网站...郁闷...而且此项目还提供大文件的上传...如果用程序输出,我怕系统隔几分钟就死一次了...)....
下面实现动态文件下载--动态文件指该文件实际并不存在,是内存中的数据,然后输出成具体文件:
内容应该当二进制来处理,所以应该调用HttpServletResponse的getOutputStream方法返回的ServletOutputStream对象来向客户端写入文件内容。
代码如下:
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment;filename=hello.txt");
ServletOutputStream sos=response.getOutputStream();
sos.write("hello kids".getBytes());
sos.close();
输出文件为hello.txt 内容为hello kids
相关文章推荐
- [导入]通过程序实现文件下载更名,动态文件下载
- 通过一般处理程序实现【文件下载】
- 通过java程序实现scp上传和下载文件
- 通过一般处理程序实现【文件下载】
- JAVA通过访问页面中的URL实现Http文件下载到本地
- 通过ServletContext实现中文文件的下载
- init.rc文件里面启动c++程序,通过jni调用java实现
- java实时向zip中写excel文件并通过浏览器实现下载
- 通过一般处理程序实现【文件上传】
- C# WinForm通过WebClient实现文件上传下载 (附源码)
- PHP通过发送header头实现文件下载
- 通过FTP服务端来实现匿名用户和基本用户的访问,可以实现文件上传和下载。通过web网站来浏览内容
- js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法
- ASP.NET文件下载简单实现(也可以通过直接读取数据库 大字段文件,如oracle 中的bolg,long raw 等大字段文件)
- Ajax请求ashx一般处理程序实现文件下载
- 通过新立得下载的软件安装程序文件位置和Ubuntu .deb包安装方法
- asp.net使用一般处理程序实现文件下载
- 使用Java程序来实现HTTP文件的队列下载
- java中通过Servlet实现文件下载
- php实现从ftp服务器上下载文件树到本地电脑的程序