Java论坛网»Java技术»文件下载

文件下载

问?:
文件下载时怎么调用系统的另存为窗体并且可以指定当前路径就是你所需要的路径以及文件类型?
答!: 1:
String root = getServletContext().getRealPath("/");
String path = request.getParameter("path");
String name = request.getParameter("name");

response.setContentType("unknown");
response.addHeader("Content-Disposition", "filename=\"" + name + "\"");

try
{
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(root + path + name);

byte[] b = new byte[1024];
int i = 0;

while ( (i = fis.read(b)) > 0 )
{
os.write(b, 0, i);
}

fis.close();
os.flush();
os.close();
}
catch ( Exception e )
{
}
答!: 2:
学习。
答!: 3:
getOutputStream() has already been called for this response

报错了啊
答!: 4:
response方法你没有设置文件的类型是html还是appliction,你只要加上那个就好了
答!: 5:
<%@page 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中路径最后没有/
String fname="";


fname = request.getParameter("fname");
String filenamedownload = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/Document/Building/"+fname;
System.out.println(filenamedownload);
String filenamedisplay = fname;
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;
}
}
%>
答!: 6:
下载的应该是相对路径,而不是绝对路径
答!: 7:
我现在就郁闷在我的IE不支持目标另存为啊所以我现在就考虑到怎么让我自己来写下载的
答!: 8:
http://iamin.blogdriver.com/iamin/1072546.html

相关JAVA教程:
谁有JFRERCHART的文档发我份~~谢了
请问各位高手这个错误是什么意思?
如何在WINDOWS下的TOMCAT配置虚拟主机
jbuilder-x为什么不删除当前字符?
用 Struts + Hibernate 做的一个登陆程序,请各位帮忙!
这里有一个全面的netbeans5的中文教学资料,能让大家对怎么使用netbeans,什么是netbeans有一个全面的了解ht
有没有哪位遇到或知道displaytag中使用href时的空指针异常问题?
各位大侠,有谁熟悉EasyJF开源项目啊,,
多文件上传的异常,信息,看不太懂,请高手指点一二
tomcat安装好了,但http://127.0.0.1:8080为空白页????
struts:基础问题!!!HTTP Status 503 -
什么是jopo