您的位置:首页 > 编程语言 > PHP开发

通过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即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: