通过servlet实现ftp下载功能
2014-05-13 16:43
363 查看
1.首先配置一个servlet,再次不再描述
2.后台代码如下:
public class DownServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UploadService uploadService;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String path = "/xxx/ceshi/"
String name = "www.zip";
File f2 = new File(name);
String filename2 = f2.getName();
ServletOutputStream outputStream = response.getOutputStream();
downFile(ip, port, uername, password, path, filename2,outputStream, response);
}
public void init() throws ServletException {
}
public static void downFile(String ip, int port, String username,
String password, String remotePath, String fileName,
ServletOutputStream outputStream, HttpServletResponse response) {
FTPClient ftp = new FTPClient();
int count = 0;
try {
int reply;
ftp.connect(ip, port);
ftp.setControlEncoding("UTF-8");
ftp.login(username, password);// 登录
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
System.out.println("连接服务器失败......");
outputStream.println("<html>");
outputStream.println("<script>");
outputStream.println("alert('连接服务器失败!')");
outputStream
.println("document.location.href='http://localhost:8080/xxx/ftp.jsp'");
outputStream.println("</script>");
outputStream.println("</html>");
outputStream.close();
ftp.disconnect();
return;
}
System.out.println("登陆成功......");
ftp.changeWorkingDirectory(remotePath);
FTPFile[] fs = ftp.listFiles();
for (int i = 0; i < fs.length; i++) {
FTPFile ff = fs[i];
if (ff.getName().trim().equals(fileName)) {
count++;
String filename = fileName;
response.setHeader("Content-disposition","attachment;filename="
+ URLEncoder.encode(filename,"ISO-8859-1"));
ftp.retrieveFile(new String(ff.getName().getBytes("ISO-8859-1"), "ISO-8859-1"), outputStream);
outputStream.flush();
}
}
if (count == 1) { // 下载成功
outputStream.close();
ftp.logout();
ftp.disconnect();
} else {// 文件找不到
outputStream.println("<html>");
outputStream.println("<script>");
outputStream.println("alert('文件不存在!')");
outputStream
.println("document.location.href='http://localhost:8080/xxx/ftp.jsp'");
outputStream.println("</script>");
outputStream.println("</html>");
outputStream.close();
ftp.logout();
ftp.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
try {
outputStream.println("<html>");
outputStream.println("<script>");
outputStream.println("alert('下载失败!')");
outputStream
.println("document.location.href='http://localhost:8080/xxx/ftp.jsp'");
outputStream.println("</script>");
outputStream.println("</html>");
outputStream.close();
ftp.logout();
ftp.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
}
3.在前台调用该servlet即可
2.后台代码如下:
public class DownServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UploadService uploadService;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String path = "/xxx/ceshi/"
String name = "www.zip";
File f2 = new File(name);
String filename2 = f2.getName();
ServletOutputStream outputStream = response.getOutputStream();
downFile(ip, port, uername, password, path, filename2,outputStream, response);
}
public void init() throws ServletException {
}
public static void downFile(String ip, int port, String username,
String password, String remotePath, String fileName,
ServletOutputStream outputStream, HttpServletResponse response) {
FTPClient ftp = new FTPClient();
int count = 0;
try {
int reply;
ftp.connect(ip, port);
ftp.setControlEncoding("UTF-8");
ftp.login(username, password);// 登录
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
System.out.println("连接服务器失败......");
outputStream.println("<html>");
outputStream.println("<script>");
outputStream.println("alert('连接服务器失败!')");
outputStream
.println("document.location.href='http://localhost:8080/xxx/ftp.jsp'");
outputStream.println("</script>");
outputStream.println("</html>");
outputStream.close();
ftp.disconnect();
return;
}
System.out.println("登陆成功......");
ftp.changeWorkingDirectory(remotePath);
FTPFile[] fs = ftp.listFiles();
for (int i = 0; i < fs.length; i++) {
FTPFile ff = fs[i];
if (ff.getName().trim().equals(fileName)) {
count++;
String filename = fileName;
response.setHeader("Content-disposition","attachment;filename="
+ URLEncoder.encode(filename,"ISO-8859-1"));
ftp.retrieveFile(new String(ff.getName().getBytes("ISO-8859-1"), "ISO-8859-1"), outputStream);
outputStream.flush();
}
}
if (count == 1) { // 下载成功
outputStream.close();
ftp.logout();
ftp.disconnect();
} else {// 文件找不到
outputStream.println("<html>");
outputStream.println("<script>");
outputStream.println("alert('文件不存在!')");
outputStream
.println("document.location.href='http://localhost:8080/xxx/ftp.jsp'");
outputStream.println("</script>");
outputStream.println("</html>");
outputStream.close();
ftp.logout();
ftp.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
try {
outputStream.println("<html>");
outputStream.println("<script>");
outputStream.println("alert('下载失败!')");
outputStream
.println("document.location.href='http://localhost:8080/xxx/ftp.jsp'");
outputStream.println("</script>");
outputStream.println("</html>");
outputStream.close();
ftp.logout();
ftp.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
}
3.在前台调用该servlet即可
相关文章推荐
- java通过jsp+javaBean+servlet实现下载功能
- 个人电脑配置FTP服务器,四张图搞定。项目需要,并自己写了个客户端实现下载和上传的功能!
- servlet实现下载文件功能
- 使用HttpServletResponse实现下载功能
- Java实现FTP的上传下载功能
- JAVA实现FTP服务器文件的上传,下载,删除功能
- Java语言实现简单FTP软件 FTP软件效果图预览之下载功能(2)
- Java实现FTP上传下载功能
- java 通过 URL 类和 URLConnection类 以及输入流实现文件下载功能
- Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二)
- 最简单的在VC中用MFC中FTP下载功能的实现
- Java实现FTP上传下载功能
- 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
- 简单实现下载功能--jsp,servlet
- jsp+servlet实现文件上传与下载功能
- 基于jsp和servlet,通过复选框实现批量删除的功能
- 通过busybox实现ftp功能
- Java实现FTP文件的上传和下载功能的实例代码
- 通过Servlet实现文件的下载
- Java实现FTP上传下载功能