JSP代码实现下载中文名+doc等文档+图片等格式(weblogic环境下,其它的也OK)

采用文件流输出的方式下载
1、web.xml文件中增加
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>

2、程序如下:
<%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%>
<%
//关于文件下载时采用文件流输出的方式处理:
//加上response.reset(),并且所有的%>后面不要换行,包括最后一个;
//因为Application Server在处理编译jsp时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter,
//而你却要进行流输出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制,
//就会发生:getOutputStream() has already been called for this response的错误
//详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270
//而且如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件
//下载下来的文件中就会多出一些换行符0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。
response.reset();//可以加也可以不加
response.setContentType("application/x-download");//设置为下载application/x-download
// /../../退WEB-INF/classes两级到应用的根目录下去,注意Tomcat与WebLogic下面这一句得到的路径不同,WebLogic中路径最后没有/
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
String filenamedownload = this.getClass().getClassLoader().getResource("/").getPath() + "/../../系统解决方案.doc";
String filenamedisplay = "系统解决方案.doc";//系统解决方案.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{ output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
%>


DIY


<%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%>
<%
String filename= request.getParameter("filename");
response.reset();//可以加也可以不加
response.setContentType("application/x-download");//设置为下载application/x-download
String filenamedownload = session.getServletContext().getRealPath("/ConfigFiles/UploadFiles/" + filename);
String filenamedisplay = filename;
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{ output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
%>
随着Internet的迅速发展,当今电子商务已接被广大的互联网用户所接受,网上书店系统作为其中的一部分也有了迅速的发展。 当然,网上书店系统目前主要是以B2C的方式进行经营,通过网上开店的方式向读者出售书本。国内著名的两大书店,当当网与卓越网,他们售书的理念很简单,读者可以自己寻找自己喜爱的书。对于读者来说,无需为寻找一本自己想要的书好奔波于城市的各个角落,无需因为时间问题而错过了新书的首发式,或者因为时间问题而去不了书店,网上书店系统,只需你有一台可以连上互联网的电脑,就可以按照自己的兴趣检索到自己想要的书本。 而关键的一点,就是他们只是基于B2C的,只有自己在卖书,而我们所要改进的就是引入C2C经营理念,增加了读者售书的功能,读者可以对来说已经不需要的书本售给需要它的人,当然不是免费的,系统按照设定的比率进行收费,实现额外的营运收入。 UMTS论坛近日表示,2007年初全球使用WCD-MA技术的3G用户将突破1亿大关,加上5000万使用cdma2000 1x EV-DO技术的用户,全球使用各种技术的3G用户将超过1.5亿。UMTS论坛指出,2007年将是一个3G市场迅猛发展的年头,特别是WCDMA技术被普遍采用。按照目前的发展势头,预计全球使用各种技术的3G用户数将在2007年底一举超过2.75亿。到2010年底,全球3G用户数将接近8亿,其中使用WCD-MA的用户数将占到用户总数的75%。UMTS论坛还称,到2010年,全球所有手机用户(包括使用2G和3G技术)将超过40亿,几乎是目前数量的两倍。届时,WCDMA用户也将超过6亿,占到整个手机用户数的14.2%。 网上书店正是基于这种市场潜力,面向中小型图书销售商而开发的,力争为中小型书店提供一款功能完善、界面友好、性能可靠的网上销售软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值