1.最直接最简单的JSP文件下载,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。
2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(JSP文件下载示例如下)
- <%
- response.setContentType(fileminitype);
- response.setHeader("Location",filename);
- response.setHeader("Cache-Control", "max-age=" + cacheTime);
- response.setHeader("Content-Disposition", "attachment; filename=" + filename); //filename应该是编码后的(utf-8)
- response.setContentLength(filelength);
- OutputStream outputStream = response.getOutputStream();
- InputStream inputStream = new FileInputStream(filepath);
- 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;
- %>
3.既然是JSP文件下载的话,还有一种JSP文件下载方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。
servlet端示例
- public void service(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
- res.setContentType(" text/plain ");
- OutputStream outputStream = null;
- try {
- outputStream = res.getOutputStream();
- popFile(srcFile, outputStream)) ;//把文件路径为srcFile的文件写入到outputStream中。
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
JApplet端示例
URLConnection con;
【编辑推荐】