我自己用了一个简单的页面:
<body>
<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="upload.action">
文件标题: <input type="text" name="title"><br/>
选择文件:<input type="file" name="upload"><br/>
<input type="submit" value="上传">
<a href="down/Struts2_maximunSize.txt" >下载</a>
</form>
</body>
其中:<a href="down/Struts2_maximunSize.txt" >下载</a>
为下载链接。
发现一个现象,图片格式和txt格式的文件不会出现下载框提示,也不会下载到本地,只能在页面浏览。只有*.exe才能出现下载提示框能下载。这是为什么?
java 下载是不是仅靠 <a>标签就能完成呢?
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
不能直接下载的,要把文件流放到response里去
- Java code
ByteArrayOutputStream baos = FileUpDownUtil.castToBAOStream(object); response.setContentType(contentType); response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("GBK"), "ISO8859_1")); ServletOutputStream out = response.getOutputStream(); baos.writeTo(out); out.flush();
------解决方案--------------------------------------------------------
你这个现象是正常的:
因为现在的浏览器都比较智能,如果浏览器认为它能处理这种格式的数据,就会直接显示它。
比如:html,txt,gif,甚至 flv 和 pdf 等。
而对于它不认识的,就会提示进行下载。
如果希望浏览器强制弹出下载提示,那么就需要借助Servlet来提供下载,并且在Head信息中,说明该数据格式是下载数据,比如:
response.setContentType("application/x-msdownload");
response.setContentType("application/octet-stream");
具体做法,可以Google下的。
------解决方案--------------------------------------------------------