问题一:可以用IE保存,但不能弹出迅雷保存。
问题二:我在另外一个项目里面,可以用迅雷保存,但迅雷保存的时候另存文件名称是action的连接名称而不是我的文件名。
        即:在迅雷里面保存的时候另存文件名会变成DownloadServlet或者其他,但就是不会保存成我要下载的文件名。
 
希望能回答以上的两个问题。下面是download.html里面的代码:
 <form action="DownloadServlet" method="post">
   <input type="submit" value="下载">
 </form>
下面是DownloadServlet里面的代码:
我直接下载upfile文件夹里面的10_后台框架.avi文件public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("video/x-msvideo");   

response.setHeader("Content-disposition","attachment; filename=" +              
         new String("10_后台框架.avi".getBytes(),"iso_8859_1"));

request.getRequestDispatcher("\\upfile\\10_后台框架.avi").forward(request,response);
}
下面是web.xml里面的代码:<servlet>
    <servlet-name>DownloadServlet</servlet-name>
    <servlet-class>com.DownloadServlet</servlet-class>
  </servlet>  <servlet-mapping>
    <servlet-name>DownloadServlet</servlet-name>
    <url-pattern>/DownloadServlet</url-pattern>
</servlet-mapping>
希望能给个详细点的答案。  谢谢!

解决方案 »

  1.   

    request.getRequestDispatcher("\\upfile\\10_后台框架.avi").forward(request,response);我猜你的这个转向,出问题了,要不你直接用File读取文件输出看看!至于弹出迅雷,你应该去看看迅雷的连接怎么写的。好像并不是 href="http://" 之类的
      

  2.   

    其实在html页面上直接用<a href="upfile\software\10_后台框架.avi">下载文件</a>是可以弹出迅雷下载文件,并且另存文件名也不会出错误。而在页面上直接点超链接下载的缺点是会把文件下载的路径完全暴露,而我又还不会加密什么的。所以才放到servlet里面去用超链接下载。
    不想用File流读取文件,只想用超链接。
      

  3.   

    楼主 你的问题我也遇到了,我发现一个特点,我用IE打开的时候,弹出迅雷的命名是错的,但是我360浏览器的时候,弹出的名字就是对的,我也百思不得其解,这个算是IE的bug么????
      

  4.   

    何不写成这样呢?"<a href="./upfile/software/10_后台框架.avi">下载文件</a>"
    试试吧