会用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

解决方案 »

  1.   

    jspsmartupload,很好用的。
    www.jspsmart.com
      

  2.   

    import java.io.*;
    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
    { }
    }