通过servlet实现ftp下载功能

来源:互联网 发布:oracle查看实例端口 编辑:程序博客网 时间:2024/05/28 09:33

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即可

0 0
原创粉丝点击