Servlet下载服务器文件
来源:互联网 发布:bugclose 源码下载 编辑:程序博客网 时间:2024/05/18 12:37
背景:最近得到一个需求,为了抓取比较纯净的流量,需要在给定的服务器上搭建一个服务器,从客户端访问搭建的服务器,下载服务器上的文件,下载过程中抓取流量。
一:服务器只用过Apache的Tcmcat,就用Tomcat
二:思路,在服务器上搭建一个web项目服务,在客户端去访问,下载文件。
三:下面给出比较麻烦的一块(利用Servlet进行文件下载)
通过JS调用Servlet进行文件下载:
前台代码:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>文件下载 |homepage</title><script src="./jquery-3.1.1.min.js"></script><script>function Download(){var url=document.getElementById("url").value;if(url!=""){$.post("/CeShi/FileServlet",{URL:url},function(data,status){alert(status);});}else alert("please input file_url");}</script></head><body><div><h2 align='center'> 文件下载</h2></div><div>File_URL:<br><input type="text" name="file_url" id="url" value="not use" style="width:300px; "><br></div><div><p></p><button id='submit' onclick="Download()">下载特定文件</button></div></body></html>Servlet代码:
package com.servlet;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class Download */public class FileServlet extends HttpServlet {private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public FileServlet() { super(); // TODO Auto-generated constructor stub }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String fullpath=request.getParameter("URL");File f = new File(fullpath);if(f.exists()){String filename=URLEncoder.encode(f.getName(),"UTF-8"); //解决中文文件名下载后乱码的问题 System.out.println(filename); //设置文件MIME类型 response.setContentType(getServletContext().getMimeType(filename)); //设置Content-Disposition response.setHeader("Content-Disposition", "attachment;filename="+filename); InputStream in = new FileInputStream(f); OutputStream os = response.getOutputStream(); BufferedOutputStream out = new BufferedOutputStream(os); byte[] len = new byte[1024*2]; int read = 0; while((read=in.read(len)) != -1){ out.write(len, 0, read); System.out.println("--------------------reading-------------"); } out.flush(); out.close(); in.close();}}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}注意:
这样并不会弹出下载文件框,但是文件是可以写到流中的,要想弹出文件下载框,查询资料说得需要通过window.location.href访问Servlet.
<button id='submit' onclick="javascript:window.location.href='/ROOT/FileServlet';">下载特定文件</button>
参考:
http://blog.csdn.net/longshengguoji/article/details/39433307
http://blog.csdn.net/lingling_jy/article/details/8191107
阅读全文
0 0
- Servlet下载服务器文件
- Servlet从服务器下载文件
- 使用Servlet实现浏览器从服务器下载文件
- 浏览器从服务器下载文件的Servlet实例
- javaWeb的servlet读取服务器文件并下载到浏览器
- servlet下载文件文件
- [Servlet] 实现文件下载
- Servlet下载文件
- Servlet实现文件下载
- Servlet中的文件下载
- servlet实现文件下载
- Servlet实现文件下载
- Servlet实现文件下载
- servlet实现文件下载
- servlet下载文件
- 文件下载Servlet范例
- servlet文件下载
- servlet下载文件
- Android6.0和7.0应用层更改系统语言(反射)
- [SDUT](3469)深度优先搜索练习之神奇的矩环 ---DFS(图)
- 数据库测试
- webSQL操作数据库
- HDU6098-2017多校6-贪心&水-Inversion
- Servlet下载服务器文件
- tcp+opencv 视频传输
- HDU6105(博弈题,非酋得不到救赎)
- spring cloud
- Spring Security 概述与快速启动
- 【转载】NAND Flash的续介绍
- 对集合中的对象进行排序
- 短信验证集成步骤
- 虚函数和纯虚函数的区别