社区
Web 开发
帖子详情
请教!如何用jsp开发B/S结构的Ftp?
sparthiul
2007-05-15 09:06:10
具有一般ftp上的全部功能,并提供文件的搜索功能,请问如何实现?
...全文
261
3
打赏
收藏
请教!如何用jsp开发B/S结构的Ftp?
具有一般ftp上的全部功能,并提供文件的搜索功能,请问如何实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
backhamx7
2007-05-15
打赏
举报
回复
part2
=====================================
/**
* 取得指定目录下的所有文件名,不包括目录名称 分析nameList得到的输入流中的数,得到指定目录下的所有文件名
*
* @param fullPath
* String
* @return ArrayList
* @throws Exception
*/
public ArrayList fileNames(String fullPath) throws Exception {
ftpclient.ascii(); // 注意,使用字符模式
TelnetInputStream list = ftpclient.nameList(fullPath);
byte[] names = new byte[2048];
int bufsize = 0;
bufsize = list.read(names, 0, names.length); // 从流中读取
list.close();
ArrayList namesList = new ArrayList();
int i = 0;
int j = 0;
while (i < bufsize /* names.length */) {
// char bc = (char) names;
// System.out.println(i + " " + bc + " : " + (int) names);
// i = i + 1;
if (names[i] == 10) { // 字符模式为10,二进制模式为13
// 文件名在数据中开始下标为j,i-j为文件名的长度,文件名在数据中的结束下标为i-1
// System.out.write(names, j, i - j);
// System.out.println(j + " " + i + " " + (i - j));
String tempName = new String(names, j, i - j);
namesList.add(tempName);
// System.out.println(temp);
// 处理代码处
// j = i + 2; //上一次位置二进制模式
j = i + 1; // 上一次位置字符模式
}
i = i + 1;
}
backhamx7
2007-05-15
打赏
举报
回复
part1
=========================================
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
* FTP远程命令列表<br/>
* USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT<br/>
* PASS PASV STOR REST CWD STAT RMD XCUP OPTS<br/>
* ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH<br/>
* REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ<br/>
* QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT<br/>
* 在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\n<br/>
* ftpclient.sendServer("XMKD /test/bb\r\n"); //执行服务器上的FTP命令<br/>
* ftpclient.readServerResponse一定要在sendServer后调用<br/>
* nameList("/test")获取指目录下的文件列表<br/>
* XMKD建立目录,当目录存在的情况下再次创建目录时报错<br/>
* XRMD删除目录<br/>
* DELE删除文件<br/>
* <p>
* Title: 使用JAVA操作FTP服务器(FTP客户端)
* </p>
* <p>
* Description: 上传文件的类型及文件大小都放到调用此类的方法中去检测,比如放到前台JAVASCRIPT中去检测等
* 针对FTP中的所有调用使用到文件名的地方请使用完整的路径名(绝对路径开始)。
* </p>
* <p>
* Copyright: Copyright (c) 2005
* </p>
* <p>
*/
public class FtpUpfile {
private FtpClient ftpclient;
private String ipAddress;
private int ipPort;
private String userName;
private String PassWord;
/**
* 构造函数
*
* @param ip
* String 机器IP
* @param port
* String 机器FTP端口号
* @param username
* String FTP用户名
* @param password
* String FTP密码
* @throws Exception
*/
public FtpUpfile(String ip, int port, String username, String password) throws Exception {
ipAddress = new String(ip);
ipPort = port;
ftpclient = new FtpClient(ipAddress, ipPort);
// ftpclient = new FtpClient(ipAddress);
userName = new String(username);
PassWord = new String(password);
}
/**
* 构造函数
*
* @param ip
* String 机器IP,默认端口为21
* @param username
* String FTP用户名
* @param password
* String FTP密码
* @throws Exception
*/
public FtpUpfile(String ip, String username, String password) throws Exception {
ipAddress = new String(ip);
ipPort = 21;
ftpclient = new FtpClient(ipAddress, ipPort);
// ftpclient = new FtpClient(ipAddress);
userName = new String(username);
PassWord = new String(password);
}
/**
* 登录FTP服务器
*
* @throws Exception
*/
public void login() throws Exception {
ftpclient.login(userName, PassWord);
}
/**
* 退出FTP服务器
*
* @throws Exception
*/
public void logout() throws Exception {
// 用ftpclient.closeServer()断开FTP出错时用下更语句退出
ftpclient.sendServer("QUIT\r\n");
int reply = ftpclient.readServerResponse(); // 取得服务器的返回信息
}
/**
* 在FTP服务器上建立指定的目录,当目录已经存在的情下不会影响目录下的文件,这样用以判断FTP
* 上传文件时保证目录的存在.目录格式必须以"/"根目录开头
*
* @param pathList
* String
* @throws Exception
*/
public void buildList(String pathList) throws Exception {
ftpclient.ascii();
StringTokenizer s = new StringTokenizer(pathList, "/"); // sign
int count = s.countTokens();
String pathName = "";
while (s.hasMoreElements()) {
pathName = pathName + "/" + (String) s.nextElement();
try {
ftpclient.sendServer("XMKD " + pathName + "\r\n");
} catch (Exception e) {
e = null;
}
int reply = ftpclient.readServerResponse();
}
ftpclient.binary();
}
javaboy2006
2007-05-15
打赏
举报
回复
http://www.okasp.com/techinfo/article_23563.html
JavaWeb/
JSP
/Servlet/JDBC
开发
基础入门视频教程
这门课程里面讲的都是我们要经常使用的技术,对于
开发
过程中几年都用不到的技术点,这里不讲,因为即使讲了,过段时间也就忘了,大家时间都比较宝贵。对于初学者,最重要的是打好基础,能够轻松快速的入门,不用花太...
信息安全学习----渗透测试知识点
信息安全学习----渗透测试知识点 信息收集 ...扫描网站目录
结构
,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 传输协议,通用漏洞,exp,github源码等 漏洞挖掘 浏览网站,看看网站规模,功
Jiangsheng的CSDN Digest(March 4, 2006)
为了便于搜索,这里尽可能保留了论坛上讨论的...
请教
:如用使用HtmlHelpA函数调用chm文档的指定页面(Delphi VCL组件
开发
及应用) 是显示在delphi的form里就行,不是调用hh.exe Use the webbrowser control. ...
java基础知识整理
ArrayList和Vector是基于数组实现的,所以查询的时候速度快,而在进行增加和删除的时候速度较慢LinkedList是基于链式存储
结构
,所以在进行查询的时候速度较慢但在进行增加和删除的时候速度较快。又因为Vector是线程...
渗透测试面试问题
思路流程 信息收集 1.服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 2.网站指纹识别(包括,cms,cdn,证书等),dns记录 3.whois信息,姓名,备案,邮箱,...6.扫描网站目录
结构
,爆后台,网站...
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章