当前位置: 代码迷 >> J2EE >> 关于SpringMVC下载不弹窗的有关问题,多谢
  详细解决方案

关于SpringMVC下载不弹窗的有关问题,多谢

热度:41   发布时间:2016-04-21 21:30:47.0
关于SpringMVC下载不弹窗的问题,谢谢。
关于SpringMVC下载不弹窗的问题,谢谢。

代码如下:




response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName="
+ new String(fileName.getBytes("gb2312"), "iso8859-1"));


String filePath =//这里是可以取到真实的物理地址的 
类似D:\tomcat\tmp123.doc 这样的路径
InputStream in = new FileInputStream(filePath);

OutputStream os = response.getOutputStream();

byte[] b = new byte[1024 * 1024];
int length;
while ((length = in.read(b)) > 0) {
os.write(b, 0, length);
}
in.close();
}



代码不报错,就是不弹出下载框,请问是为啥呢?谢谢。
还有,我直接把图片文件的地址(单击图片文件名之后,把数据库中存储的真实地址赋值给一个<img> 标签) 也显示不了。右键查看图片的属性,显示的是 

file:///C:/123.png

file:///C:/123.doc


之类的地址。 

------解决方案--------------------
jQuery的ajax函数、及ajaxSubmit等函数的返回类型(dataType)只有xml、text、json、html等类型,没有“流”类型.

所以你只能这样写个请求:
window.location.href = path+'/phoneInfo/downloadTemplate.do';
------解决方案--------------------
引用:
请问一下,为什么图片不行呢,谢谢。给图片赋值的时候,出不来。

response.setContentType("multipart/form-data");
最好写MimeType属性,如果要浏览器在线开必须这么做;
multipart/form-data用于二进制六下载使用
------解决方案--------------------
恩,这个是前端穿了个id过来,然后我从word中将图片读出来,根据id,返回具体的那张图片给页面展示

@RequestMapping("/image")
    @ResponseBody
    public String getImagePath(HttpServletRequest request,HttpServletResponse response) {
String filePath = null;
try {
filePath = new String((request.getParameter("filePath")).getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
return null;
}

String idx = request.getParameter("id");
if (filePath == null 
------解决方案--------------------
 idx == null) {
return null;
}

response.setContentType("image/jpeg");
int index = Integer.parseInt(idx);
try {
ServletOutputStream out = response.getOutputStream();
WordDocUtil wdu = new WordDocUtil(filePath);
List<byte[]> imageCache = wdu.getAllDocPicture();
if (imageCache != null && index < imageCache.size()){
out.write(imageCache.get(index));
}
out.flush();
wdu.closeStream();
} catch (IOException e) {
e.printStackTrace();
}
return null;

}

------解决方案--------------------
没有把文件流输出到页面,怎么弹下载框
------解决方案--------------------
response.sendRedirect("这里传资源的url");//url可以是资源的相对路径
return null;
这样就把文件流传到前台了,页面自然会弹出下载框
------解决方案--------------------
			response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
response.setContentType("application/x-msdownload;charset=utf-8");
response.flushBuffer();


试试这个
------解决方案--------------------
1. jQuery的ajax的返回类型(dataType)只有xml、text、json、html等类型,没有“流”类型.


window.location.href = download.do
通过这个地址来下载。

2. 图片的话,因为你没放在项目的路径下,
所以你需要到tomcat的server.xml配置文件中配置一个虚拟映射路径
在host 下<context> 配置一个就可以了。 
  相关解决方案