会用servlet吗?在servlet中取得一个outputstream,从一个fileinputstream中得到byte[],写到outputstream,需注意的是有两个http响应头:Content-Type:image/jpeg
Content-Disposition: attachment;filename="2003719124342258.jpg"那个Content-Type设置得当,可以充许浏览器直接打开下载在文档(例子是在装了office的机器上,浏览器会在浏览内打开word, excel文档等,靠的就是这个响应头那个Content-Disposition是控制下载的文件名的,例如,你的servlet也许叫做http://xxxxx/download,如不作Content-Disposition控制,下载的文件就叫做download,但如果你这样:
response.setHeader("Content-Disposition", "attachment;filename=\"2003719124342258.jpg\"")
保存的对话框保存文件名默认为2003719124342258.jpg
Content-Disposition: attachment;filename="2003719124342258.jpg"那个Content-Type设置得当,可以充许浏览器直接打开下载在文档(例子是在装了office的机器上,浏览器会在浏览内打开word, excel文档等,靠的就是这个响应头那个Content-Disposition是控制下载的文件名的,例如,你的servlet也许叫做http://xxxxx/download,如不作Content-Disposition控制,下载的文件就叫做download,但如果你这样:
response.setHeader("Content-Disposition", "attachment;filename=\"2003719124342258.jpg\"")
保存的对话框保存文件名默认为2003719124342258.jpg
www.jspsmart.com
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class Way extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse res)
//public void doGet(ServletRequest request, ServletResponse response)
throws IOException //, ServletException
{
String downloadFile = "C:\\java.txt";
ServletOutputStream outputstream = res.getOutputStream();
BufferedInputStream inputstream = new BufferedInputStream(new FileInputStream(downloadFile)); //res.setHeader("Content-encoding","x-gzip");
res.setContentType("text/plain");
res.setHeader("Content-Disposition","attachment; filename=\"" +downloadFile+ "\";");
res.setHeader("Accept-ranges","bytes"); int data;
while((data = inputstream.read()) != -1)
{
outputstream.write(data);
}
} public void init() throws ServletException
{ }
}