需要引用到的jar
commons-net-1.4.1.jar
commons-net-2.2.jar
/**
* Description: 向FTP服务器上传文件
*
* @param url
* FTP服务器hostname
* @param port
* FTP服务器端口
* @param username
* FTP登录账号
* @param password
* FTP登录密码
* @param path
* FTP服务器保存目录
* @param filename
* 上传到FTP服务器上的文件名
* @param input
* 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(String url, int port, String username,
String password, String path, String filename, InputStream input) {
/**将结束*/
// 初始表示上传失败
boolean success = false;
FTPClient ftp = null;
String proxySet = System.getProperty("proxySet");
//true表示有设置代理
// 创建FTPClient对象
if("true".equals(proxySet)) {
ftp = new FTPHTTPClient(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort")));
} else {
ftp = new FTPClient();
}
try {
int reply;
// 连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.connect(url, port);
// 登录ftp
ftp.login(username, password);
// 看返回的值是不是230,如果是,表示登陆成功
reply = ftp.getReplyCode();
// 以2开头的返回值就会为真
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
// 转到指定上传目录
ftp.changeWorkingDirectory(path);
//如果有配置代理参数时,需要设置如下模式
// if("true".equals(proxySet)) {
// ftp.enterLocalPassiveMode();
// }
ftp.enterLocalPassiveMode();
ftp.setBufferSize(1024);
ftp.setControlEncoding("GBK");
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
// 将上传文件存储到指定目录
ftp.storeFile(filename, input);
// 关闭输入流
input.close();
// 退出ftp
ftp.logout();
// 表示上传成功
success = true;
} catch (Exception e) {
// e.printStackTrace();
System.err.println(e);
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}