javaweb页面附件、图片下载及打开(实现方法)
程序员文章站
2023-12-19 18:21:10
在javaweb中写了一个图片的链接,可以打开预览,另外提供一个下载功能。
以下是预览代码,没什么好说的;href若连接的是一个压缩包文件之类无法直接打开的就可以直接下载...
在javaweb中写了一个图片的链接,可以打开预览,另外提供一个下载功能。
以下是预览代码,没什么好说的;href若连接的是一个压缩包文件之类无法直接打开的就可以直接下载;
<a target="_blank" class="media" href="img/xd201607000023.gif" rel="external nofollow" rel="external nofollow" >预览</a>
关键在于如何在页面上下载这个张图片,于是写了下面的一个jsp用流来读取文件;
<a target="_blank" href="downloadfile.jsp?path=img/&pdfname=aa.gif" rel="external nofollow" >下载</a>
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ page language="java" import="java.io.*;" %> <% string path = request.getcontextpath(); string basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; string classpath = (string.valueof(thread.currentthread().getcontextclassloader().getresource(""))).replaceall("file:/", "").replaceall("%20", " ").trim(); %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <% //得到文件名字和路径 string filepath = request.getparameter("path"); string filename = request.getparameter("pdfname"); //设置响应头和下载保存的文件名 response.setcontenttype("application/octet-stream"); response.setheader("content-disposition", "attachment; filename=\"" + filename + "\""); //打开指定文件的流信息 outputstream outputstream = response.getoutputstream(); inputstream inputstream = new fileinputstream(filepath+filename); byte[] buffer = new byte[1024]; int i = -1; while ((i = inputstream.read(buffer)) != -1) { outputstream.write(buffer, 0, i); } outputstream.flush(); outputstream.close(); inputstream.close(); outputstream = null; out.clear(); out = pagecontext.pushbody(); %> </head> <body> </body> </html>
最后查资料发现在html5中提供了download属性,只要写了这个属性可以直接下载图片而不是直接打开;可惜只支持h5,不然省事多了
<a target="_blank" download="aa" href="img/xd201607000023.gif" rel="external nofollow" rel="external nofollow" download="aa" >下载</a>
download中为下载文件的文件名。
以上这篇javaweb页面附件、图片下载及打开(实现方法)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。