`

FTP 上传

 
阅读更多

FTP 上传

 

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.StringTokenizer;
import sun.net.ftp.FtpClient;

public class Ftp {

private String ip = "";

private String username = "";

private String password = "";

private int port = 21;

private String localFileFullName = ""; // 需要上传的目录

FtpClient ftpClient = null;

OutputStream os = null;

FileInputStream is = null;

public Ftp(String serverIP , int port , String username , String password) {

this.ip = serverIP;
this.username = username;
this.password = password;
this.port = port;

}

public Ftp(String serverIP, String username, String password) {

this.ip = serverIP;
this.username = username;
this.password = password;

}

/**
* 创建文件夹
*
* @param dir
* @param ftpClient
* @throws Exception
*/
private void createDir(String dir, FtpClient ftpClient) throws Exception {
ftpClient.ascii();
StringTokenizer s = new StringTokenizer(dir, "/"); // sign
s.countTokens();
String pathName = "";
while (s.hasMoreElements()) {
pathName = pathName + "/" + (String) s.nextElement();
try {
ftpClient.sendServer("MKD " + pathName + "\r\n");
} catch (Exception e) {
e = null;
}
ftpClient.readServerResponse();
}
ftpClient.binary();

}

/**
* 检查文件夹是否存在
*
* @param dir
* @param ftpClient
* @return
*/
private Boolean isDirExist(String dir, FtpClient ftpClient) {
try {
ftpClient.cd(dir);
} catch (Exception e) {

return false;
}
return true;
}

/**
* ftp上传
* @param localFileFullName 上传的源文件夹
* @return
*/
public Boolean upload(String localFileFullName) {
this.localFileFullName = localFileFullName;
try {
String savefilename = new String(localFileFullName.getBytes("ISO-8859-1"), "GBK");
// 新建一个 FTP客户端连接
ftpClient = new FtpClient();
ftpClient.openServer(this.ip, this.port);
ftpClient.login(this.username, this.password);
// 打开本地待长传的文 件
File file_in = new File(savefilename);
processFile(file_in, ftpClient);
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
if (ftpClient != null) {
ftpClient.closeServer();
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception e in Ftp upload(): " + e.toString());
return false;
}

}

/**
* 上传文件
*
* @param source
* @param ftpClient
* @throws Exception
*/
private void processFile(File source, FtpClient ftpClient) throws Exception {
if (source.exists()) {
if (source.isDirectory()) {
if (!isDirExist(source.getPath().substring(
localFileFullName.length()).replace("\\", "/"),
ftpClient)) {
createDir(source.getPath().substring(
localFileFullName.length()).replace("\\", "/"),
ftpClient);
}
File sourceFile[] = source.listFiles();
for (int i = 0; i < sourceFile.length; i++) {
if (sourceFile[i].exists()) {
if (sourceFile[i].isDirectory()) {
this.processFile(sourceFile[i], ftpClient);
} else {
ftpClient.cd(cheangPath(sourceFile[i].getPath()));
ftpClient.binary();
os = ftpClient.put(sourceFile[i].getName());
byte[] bytes = new byte[1024];
is = new FileInputStream(sourceFile[i]);
// 开始复制
int c;
// 暂未考虑中途终止的情况
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
}
}
}
} else {
ftpClient.cd(cheangPath(source.getPath()));
ftpClient.binary();
os = ftpClient.put(source.getName());
byte[] bytes = new byte[1024];
is = new FileInputStream(source);
// 开始复制
int c;
// 暂未考虑中途终止的情况
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
}

} else {
throw new Exception("此文件或文件夹[" + source.getName() + "]有误或不存在!");
}

}

/**
* 获取当前的FTP路径
*
* @param path
* @return
*/
private String cheangPath(String path) {
path = path.substring(localFileFullName.length()).replace("\\", "/");
if ("".equals(path)) {
path = "/";
} else {
path = path.substring(0, path.lastIndexOf("/") + 1);
}
return path;
}

public static void main(String args[]) throws Exception {
Ftp ftpup = new Ftp("127.0.0.1", 21, "colin", "colin");
ftpup.upload("E:/test/test");
}
}

 

分享到:
评论

相关推荐

    FTP控件_ftp上传_文件上传_ftp控件_FTP上传控件_

    "FTP上传控件"是专为实现文件上传功能而设计的,它简化了FTP客户端的实现过程,开发者无需深入了解FTP协议的细节,就能在应用中实现文件上传功能。"FTP上传控件"的关键特性包括支持超大文件上传和断点续传。 超大...

    Labview FTP上传文件

    Labview FTP上传文件是利用Labview(Laboratory Virtual Instrument Engineering Workbench)这一强大的图形化编程环境,通过FTP(File Transfer Protocol)协议实现文件的远程传输。FTP是一种标准网络协议,用于在...

    JAVA实现简单的对FTP上传与下载

    总的来说,使用Java实现FTP上传和下载涉及网络通信、文件操作和错误处理等多个方面的知识。通过"ftpLoadDown.jar"库,我们可以简化这个过程,使得开发者可以专注于业务逻辑,而无需关心底层的FTP协议细节。在实际...

    VB API 实现FTP上传下载源代码

    **VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...

    golang实现ftp上传资源

    在"Go实现FTP上传资源"这个主题中,我们需要关注以下几个关键知识点: 1. **FTP协议基础**:FTP协议由两部分组成,即控制连接和数据连接。控制连接用于发送命令和接收响应,数据连接则用于实际的文件传输。FTP支持...

    C++ libcurl ftp上传文件

    BoschNetConn可能是你的项目或库的名字,它可能封装了这些libcurl的FTP上传操作,提供了一种更方便的方式来处理网络连接。如果你正在使用这个库,你应该查阅其文档以了解如何具体使用它的API来上传文件。 总之,C++...

    FTP上传与下载程序PB

    在这个"FTP上传与下载程序PB"的案例中,我们将会探讨如何使用PowerBuilder来实现FTP功能,包括文件的上传和下载,以及可能涉及的自动升级机制。 首先,理解FTP的基本概念至关重要。FTP允许用户在两台计算机之间交换...

    FTP上传实例(带进度条)

    这个FTP上传实例提供了可视化的进度反馈,使得用户能够清晰地看到文件上传的进度,提高了用户体验。 FTP上传的核心原理是通过FTP客户端连接到FTP服务器,然后将本地文件分块发送到服务器。在这个过程中,通过跟踪已...

    winform实现FTP上传、下载、删除文件

    **FTP上传文件:** 要实现FTP文件上传,我们首先创建一个`FtpWebRequest`对象,设置其方法为`WebMethod.UploadFile`,然后提供FTP服务器的URL、用户名和密码。接着,打开一个流写入器,将本地文件内容写入请求的主体...

    FTP上传(断点续传)更新进度条

    FTP上传和断点续传是网络传输中两个重要的概念,特别是在大文件传输场景下,而更新进度条则是提升用户体验的关键元素。在这个公司项目的第一个版本中,我们关注的是如何实现一个功能完善的FTP上传系统,该系统支持...

    FTP上传 实现网站预览

    FTP上传实现网站预览的过程涉及多个步骤和技术,下面将详细解释这一过程。 1. FTP客户端与服务器: FTP服务需要一个服务器端和客户端。服务器端是存储网站文件的地方,而客户端是用户用来连接服务器并管理文件的...

    curl实现ftp上传下载

    FTP上传涉及到将本地文件发送到远程FTP服务器。使用libcurl,我们可以通过以下步骤实现: 1. **初始化libcurl**:创建一个`CURL`指针,并调用`curl_global_init()`初始化全局设置。 2. **设置URL**:使用`curl_...

    萤石云摄像头自动截图以及FTP上传

    萤石云摄像头自动截图以及FTP上传是一个集成自动化与远程存储功能的系统,它结合了现代监控设备的技术优势,为用户提供了一种高效、便捷的方式来管理和获取摄像头捕获的图像。在这个系统中,萤石云摄像头扮演着核心...

    Delphi Ftp上传程序

    Delphi FTP上传程序是使用Delphi7开发的一个应用程序,它实现了通过FTP(文件传输协议)将本地文件上传到远程服务器的功能。FTP是一种广泛用于互联网上的标准协议,允许用户在计算机之间传输文件。在这个项目中,...

    ftp上传程序(典型的ftp上传应用)

    FTP上传程序就是实现这一功能的应用,允许用户将本地计算机上的文件或目录上传到远程FTP服务器上。这种程序通常具有用户友好的界面,简化了文件传输过程。 在"FTP上传程序(典型的ftp上传应用)"中,重点在于程序...

    FTP上传与下载pb9.0code

    标题“FTP上传与下载pb9.0code”指的是使用PowerBuilder 9.0(简称PB9)开发的一个程序,该程序实现了FTP(File Transfer Protocol)的上传和下载功能。PowerBuilder是一款强大的可视化编程工具,特别适合于构建...

    ftp上传demo

    FTP(File Transfer Protocol)是一种基于TCP/IP协议的...综上所述,FTP上传涉及到网络通信、身份验证、文件操作等多个方面,理解并熟练运用FTP上传能有效提高工作效率,特别是在需要跨网络共享和管理文件的环境中。

    ftp上传工具, 上传ftp服务器

    在这个场景中,我们关注的是一个基于Java开发的FTP上传工具,它能够帮助用户将本地文件上传到FTP服务器。以下是一些关于FTP上传工具和相关技术的知识点: 1. **FTP基本概念**: FTP是一个应用层协议,基于TCP/IP...

    非常好用的ftp上传工具

    很好用的ftp上传工具,上传速度也很快,很好用的ftp上传工具,上传速度也很快,很好用的ftp上传工具,上传速度也很快,

    VC++ FTP上传下载

    在VC++中实现FTP上传和下载功能,开发者通常会利用WinInet库或第三方FTP库。 首先,让我们深入了解一下FTP上传。FTP上传是指将本地计算机上的文件发送到FTP服务器的过程。在VC++中,可以使用WinInet API来实现这一...

Global site tag (gtag.js) - Google Analytics