我提交的请求字符串:showMovie.do?method=showMovieInfo&page=movie&id=${movie.id }
我用的是DispatchAction,现在下载下来的文件名是showMovie.do,下载下来的视频没有问题,可以正常播放!public ActionForward download(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

String movieId = request.getParameter("id");
Movie movie = movieDao.queryOneMovie(Integer.parseInt(movieId));
String url = movie.getMovieurl();
String ext = url.substring(url.lastIndexOf("."));
String filename = movie.getName() + "." + ext;
String filePath = request.getSession().getServletContext().getRealPath("") + "/" + movie.getMovieurl();
BufferedInputStream br = new BufferedInputStream(new FileInputStream(filePath));
//InputStream is = new FileInputStream(filePath);
byte[] buff = new byte[1024];
int len = 0;
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
OutputStream out = response.getOutputStream();
while((len = br.read(buff)) > 0) {
out.write(buff, 0, len);
}
br.close();
out.close();
return null;
}不知道哪里出了问题,愁啊!求广大好心人们解答!

解决方案 »

  1.   

    没试过,不知道这样可以吗?
    String prefix="test";
    String suffix=".wmv";
    response.setHeader("Content-Type", "TEST");
    response.setHeader("Content-Disposition","attachment; filename="+prefix+suffix);
      

  2.   

    我晕了,大家好像没看明白的问题,首先,下载之后可以正常播放,其次,不管用迅雷还是目标另存为,文件名都不正确,再次,我写了一个假的,它的名字还是showMovie.do
      

  3.   

    我终于发现问题所在了,因为我的filename含有中文,如果把它改成英文就可以了,随后,我想到了response.sendCharacter("UTF-8"),但是还是不好使,求解
      

  4.   

    this.getRes().reset();
    this.getRes().setContentType("application/octet-stream;charset=gb2312");
    this.getRes().setHeader("Content-Disposition", "attachment; filename=\""
    + new String("项目报表.xls".getBytes("GBK"),"ISO-8859-1") + "\"");自己设置想要的类型
      

  5.   

    response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(templateShowName, "UTF-8"));
      

  6.   

    filename中的中文问题好像和response.sendCharacter("UTF-8")是没有关系的吧,不知道原理。也出现过下载文件文件名的问题,不过和楼主的问题不大一样,我的是文件名的后缀是正常的,只是名称是乱码,用new String(fileName.getBytes("utf-8"),"iso-8859-1")解决的。也遇到过下载文件名是*.do的情况,换成
    response.setContentType("Application/x-msdownload"); 
    response.setHeader("Content-Disposition", "attachment;filename="+filename);
    这是之前我的一篇帖子中一个朋友告诉我的,http://topic.csdn.net/u/20101027/19/9a13597a-6a68-4ca8-818d-1f99f3fb1c21.html,参考一下。