`
从此醉
  • 浏览: 1046047 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

通过ftp模拟网盘

 
阅读更多


一、建立一个类,用来获取ftp对应目录下的目录和文件信息。

package com.xiaomo.ftp.down_upload;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class ListMapFtp {

public static List<Map> showList(String hostname,int port,String username,String password,String pathname) throws IOException{
FTPClient ftpClient = new FTPClient();
List<String> list = new ArrayList<String>();

List<Map> listMap = new ArrayList<Map>();

Map<String, String> mapFile = new HashMap<String, String>();
Map<String, String> mapDirectory = new HashMap<String, String>();
try{
int reply;
ftpClient.connect(hostname, port);
ftpClient.login(username, password);
reply = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
ftpClient.disconnect();
}
ftpClient.changeWorkingDirectory(pathname+"/");

FTPFile[] ftpFiles = ftpClient.listFiles();

for(FTPFile ftpFile:ftpFiles){
if(ftpFile.getType()==1&&!ftpFile.getName().equals(".")&&!ftpFile.getName().equals("..")){
list.add(pathname+"/"+ftpFile.getName());
mapDirectory.put(ftpFile.getName(), pathname+"/"+ftpFile.getName());
}
}

for(FTPFile ftpFile:ftpFiles){
if(ftpFile.getType()==0){
list.add(ftpFile.getName());
}
}
listMap.add(mapDirectory);
listMap.add(mapFile);
ftpClient .logout();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
return listMap;
}
}

二、建立一个servlet类,通过网页显示对应的ftp目录和文件信息

package com.xiaomo.ftp.down_upload;


import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class ServletFtp extends HttpServlet {
ListMapFtp listMapFtp = null;
DownloadFtp downloadFtp = null;

public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException ,IOException{
String appPath = request.getContextPath();//获得当前项目的相对路径
HttpSession session = request.getSession();
String remotePath = request.getParameter("remotePath");//获得当前路径
if(remotePath!=null){
System.out.println("remotePath:"+remotePath);
session.setAttribute("sessionPath", remotePath);//将当前路径保存到session中
}
if(remotePath==null){
remotePath = "";
}
String filename = request.getParameter("filename");//获得当前文件的名称
if(filename!=null){
System.out.println("filename: "+filename);
}
listMapFtp = new ListMapFtp();
List<Map> list = listMapFtp.showList("192.168.**.**", 21, "*****", "******",remotePath);//获得ftp对应路径下的所有目录和文件信息
Map<String,String> mapDirectory = list.get(0);//获得ftp该路径下的所有目录信息
Map<String,String> mapFile = list.get(1);//获得ftp该路径下所有的文件信息

PrintWriter out = response .getWriter();
out.print("<html><head><title>信息提示页</title></head><body>");
out.print("<a style='color:red' href='http://localhost:8080/xiaomo/ftpList?remotePath='>首页</a><br/><br/>");
if(remotePath!=null&&filename==null){//如果前台点击的是目录则显示该目录下的所有目录和文件
if(mapDirectory.size()>1){
// out.println("<h3>目录</h3>");
for(String str  : mapDirectory.keySet()){
         out.print("<img src='"+appPath+"/pic/directory.jpg' width='25px' height='25px'> <a style='color:blue' href='http://localhost:8080/xiaomo/ftpList?remotePath="+mapDirectory.get(str)+"'>"+str+"</a><br/>");
   }
}
if(mapFile.size()>1){
// out.println("<h3>文件</h3>");
for(String str  : mapFile.keySet()){
out.print("<img src='"+appPath+"/pic/file.jpg' width='20px' height='20px'> <a style='color:green' href='http://localhost:8080/xiaomo/ftpList?filename="+mapFile.get(str)+"'>"+str+"</a><br/>");
   }
}
}else if(filename!=null){//如果前台点击的是文件,则下载该文件
downloadFtp = new DownloadFtp();
String sessionPath = (String) session.getAttribute("sessionPath");//获得保存在session中的当前路径信息
System.out.println("session--->sessionPath"+sessionPath);
downloadFtp.downFile("192.168.50.23", 21, "admin", "123456",sessionPath,filename, "D:/test/download/");
//调用方法下载该文件
out.println("<h3>"+filename+" 下载成功!</h3>");
out.print("<a style='color:blue' href='http://localhost:8080/xiaomo/ftpList?remotePath="+sessionPath+"'>返回</a><br/>");
}
out.print("</body></html>");
}

}

三、配置web.xml,通过网页访问http://localhost:8080/xiaomo/ftpList 效果如下:


出处:http://blog.csdn.net/cl05300629/article/details/9703539 作者:伫望碧落

分享到:
评论

相关推荐

    模拟RHCE教室及考试环境

    在建虚拟机时,我使用了LVM的镜像特性,这样,实际上只需要安装一台虚拟机vm,其余虚拟机通过镜像vm,就可以快速建立多台虚拟机了。另外,值得一提的是LDAP服务器了,在CentOS中使用的是slapd这个软件,配置有点...

    eNSP EVE HCL模拟器使用视频.zip

    9-ENSP 模拟FTP服务器 10-ENSP 模拟USG下一代防火墙 11-ENSP 与真机桥接 12-通过web 图形界面登陆调试虚拟防火墙 12.1-新enspv1.3 web登陆防火墙v3 13-ENSP 模拟数据中心级交换机CE6800 和CE12800 14-ENSP 与vmware ...

    专升本计算机应用基础模拟一.doc

    专升本《计算机应用基础》模拟一 1.美国第一台电子数字计算机诞生于( )。 A. 1936年 B. 1946年 C. 1952年 D.1959年 2.计算机硬件的五大基本构件包括运算器、存储器、输入设备、输出设备和( )。 A. 显示器 B. 控制器 ...

    Motrix 全能下载工具

    Motrix 是一款全能的下载工具,支持下载 HTTP、FTP、BT、磁力链、百度网盘等资源。 特性: 简洁明了的图形操作界面 支持BT和磁力链任务 支持选择性下载BT部分文件 每天自动更新 Tracker 服务器列表 UPnP & NAT-PMP ...

    apache-jmeter-5.3_src.zip

    JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。...

    apache-jmeter-2.13.rar

    JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。...

    Apache JMeter (apache-jmeter-5.5.zip)

    它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。 Apache JMeter 功能包括: 能够加载和性能测试许多不同的应用程序/服务器/协议类型: 网络 - HTTP、HTTPS...

    apache-jmeter-5.2.1.rar

    它通常模拟大量的数据对一个Server或者一个Server Group 网络等进行负载测试。然后通过分析它产生的性能图表来判断测试结果。和其他性能压测工具相比较,还是比较轻量级的,不够好像不支持IP伪装。官网有更详细的...

    java实验报告之聊天程序的设计

    Java多线程与C/S综合应用程序设计(C/S聊天系统、ftp程序等)。 三、实验硬件、软件环境 1.PC计算机一台,配置为CPU为P4 2.8G,内存为512M,硬盘为80G。 2.WindowsXP + JSDK1.5 + JCreatorPro3.5 四、实验算法设计 ...

    华为HCIA-RS V2.5培训视频教程【共25集】.rar

    目录:网盘文件,永久链接 01 传输介质 帧格式 02 IP 编址 ICMP ARP 03 VRP基础 文件操作 04 VRP 系统管理 05 STP 06 RSTP 07 IP 路由基础 08 静态路由 09 OSPF 1 10 OSPF 2 11 OSPF 多区域 12 OSPF 开销...

    java文件上传下载

    java写的关于文件上传下载的C/S模式的应用程序,模拟网盘

    AIX 系统维护下载

    第 44 楼:模拟硬盘更换 第 45 楼:AIX资源监控与调制工具 第 46 楼:关于AIX系统文件安全性方面的几点考虑 第 47 楼:使用lastcomm命令查看用户命令历史 第 48 楼:RS/6000小型机故障的基本定位方法

    apache-jmeter-5.3 压力测试工具.7z

    Apache jmeter 可以用于对静态的和动态的...它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

    ensp典型三层架构校园网络搭建(文档+拓扑)

    该项目中涉及的技术包括,VLAN、链路聚合、DHCP、OSPF、缺省路由、VRRP、MSTP、ACL、NAT、DNS、FTP、WEB、无线WLAN、防火墙的相关配置等内容,功能自认为非常全面,需要做课设的和毕设的可以参考,不想动手敲代码的...

    JAVASocket编程资料汇总

    资源名称:JAVA Socket编程资料汇总资源目录:【】Java Socket 编程模拟Ftp【】Java Socket多人在线考试系统源程序【】JavaSocket线程实现多客户的机制以及获取ip地址【】JavaSocket通讯例程【】三步学会JavaSocket...

    loadrunner测试资料

    通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试,LoadRunner 适用于各种体系架构,能支持广范的协议和技术(如Web、Ftp、Database等),能预测系统...

    windows实用dos命令大全

    (3)选用/TEST参数只做模拟试验(TEST)不做真正的写入动作。使用此参数屏幕会显示:“Simulation only”  (4)选用/U参数不使用MIRROR映像文件的数据,直接根据磁盘现状进行UNformAT。  (5)选用/PSRTN;修复...

    东北大学《计算机应用基础》在线平时作业2.docx

    A:网络操作系统 B:网桥 C:网络体系结构 D:路由器 参考选项:C 在PowerPoint中,Word文档和演示文稿之间的关系是()。 A:演示文稿中可以嵌入Word文档 B:可以从Word中输入演示大纲文件 C:可以把演示文稿中幻灯片的内容...

    网络配置实验视频.zip

    目录网盘文件永久链接 1 ASA-vp上.exe 2 ASA-vp下.exe 3 asa基本配置.exe 4 ASA配置nat1.exe 5 asdm配置.exe 6 BGP地址汇总.exe 7 bgp属性控制路由AS-pachi.exe 8 BGP控制选路.exe 9 BGP联邦.exe 10 CBWFQ...

    服务器基础知识介绍(服务器全部组件).pdf

    BMC的主要功能 通过系统的串口进行访问 故障日志记录和 SNMP 警报发送 访问系统事件日志 (System Event Log ,SEL) 和传感器状况 控制包括开机和关机 独立于系统电源或工作状态的支持 模拟KVM 通过远程连接服务器的...

Global site tag (gtag.js) - Google Analytics