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

Java_er 2013-11-25 08:48:29
关于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


之类的地址。
...全文
664 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
买房动力十足 2013-11-29
  • 打赏
  • 举报
回复
1. jQuery的ajax的返回类型(dataType)只有xml、text、json、html等类型,没有“流”类型. window.location.href = download.do 通过这个地址来下载。 2. 图片的话,因为你没放在项目的路径下, 所以你需要到tomcat的server.xml配置文件中配置一个虚拟映射路径 在host 下<context> 配置一个就可以了。
  • 打赏
  • 举报
回复
response.sendRedirect("这里传资源的url");//url可以是资源的相对路径 return null; 这样就把文件流传到前台了,页面自然会弹出下载框
  • 打赏
  • 举报
回复
没有把文件流输出到页面,怎么弹下载框
Rlay_2 2013-11-27
  • 打赏
  • 举报
回复
恩,这个是前端穿了个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;
		
	}
etfired 2013-11-27
  • 打赏
  • 举报
回复
src写你上面代码中的控制器地址,直接输出到response
Java_er 2013-11-27
  • 打赏
  • 举报
回复
引用 5 楼 Rlay_2 的回复:
jQuery的ajax函数、及ajaxSubmit等函数的返回类型(dataType)只有xml、text、json、html等类型,没有“流”类型. 所以你只能这样写个请求: window.location.href = path+'/phoneInfo/downloadTemplate.do';
正解,我就是这样搞定的,谢谢。
翅膀下的风 2013-11-27
  • 打赏
  • 举报
回复
			response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
			response.setContentType("application/x-msdownload;charset=utf-8");
			response.flushBuffer();
试试这个
疯狂熊猫人 2013-11-26
  • 打赏
  • 举报
回复
前端使用window.location.href=url或者window.open(url),url表示请求路径,浏览器即可弹出下载窗口(前提是你给的的url返回的是文件或者stream)。
Java_er 2013-11-26
  • 打赏
  • 举报
回复
引用 9 楼 etfired 的回复:
[quote=引用 7 楼 Javainging 的回复:] 请问一下,为什么图片不行呢,谢谢。给图片赋值的时候,出不来。
图片src必须写浏览器可达地址,也就是你的下载的URL地址,不要写服务器文件地址,访问不到的[/quote] 恩,我到tomcat的server.xml配置文件中配置了一个虚拟映射路劲之后就可以访问了,不过访问中文的图片还是会报错。
Java_er 2013-11-26
  • 打赏
  • 举报
回复
引用 10 楼 scottxzj 的回复:
图片放项目里就完了
项目处于某种安全考虑,木有放到项目下面。而是放到了Tomcat的tmp目录下面。
snow-is-my-Love 2013-11-26
  • 打赏
  • 举报
回复
图片放项目里就完了
etfired 2013-11-26
  • 打赏
  • 举报
回复
引用 7 楼 Javainging 的回复:
请问一下,为什么图片不行呢,谢谢。给图片赋值的时候,出不来。
图片src必须写浏览器可达地址,也就是你的下载的URL地址,不要写服务器文件地址,访问不到的
etfired 2013-11-26
  • 打赏
  • 举报
回复
引用 7 楼 Javainging 的回复:
请问一下,为什么图片不行呢,谢谢。给图片赋值的时候,出不来。
response.setContentType("multipart/form-data"); 最好写MimeType属性,如果要浏览器在线开必须这么做; multipart/form-data用于二进制六下载使用
Java_er 2013-11-26
  • 打赏
  • 举报
回复
请问一下,为什么图片不行呢,谢谢。给图片赋值的时候,出不来。
蓝缘 2013-11-26
  • 打赏
  • 举报
回复
基于springMVC+springSecurity3.x+Mybaits3.x的权限系统,,开放源码,支持开源 具体请看: http://blog.csdn.net/mmm333zzz/article/details/16863543
Rlay_2 2013-11-26
  • 打赏
  • 举报
回复
jQuery的ajax函数、及ajaxSubmit等函数的返回类型(dataType)只有xml、text、json、html等类型,没有“流”类型. 所以你只能这样写个请求: window.location.href = path+'/phoneInfo/downloadTemplate.do';
Java_er 2013-11-26
  • 打赏
  • 举报
回复
谢谢,这样确实可以,不过为嘛我用AJAX提交就是不行呢?谢谢,还有,如果文件是图片的话,我只想预览,不想下载,
为什么(我用JQUERY的方式操作的)。

设置IMG标签的SRC属性为数据库中的物理地址的时候不起作用呢?右键查看的时候,貌似把路径中的斜杠给去掉了,这是为嘛啊?
Java_er 2013-11-25
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
页面上肯定不能用file:///C:/123.png这样的路劲的。
额,因为我数据库里面存放的是 C:/123.png c:/123.doc 这样的地址呢, 我给<img >的src 赋值 C:/123.png 的时候 为什么也不能直接显示图片呢,谢谢。 我那不是直接使用,我是点右键查看,看到的是那个地址,我实际上使用的是数据库中存放的 C:/123.png 这样的地址啊。 以前用Struts2的时候是可以直接这样取地址的啊,谢谢。
teemai 2013-11-25
  • 打赏
  • 举报
回复
页面上肯定不能用file:///C:/123.png这样的路劲的。

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧