文件上传到FTP服务器,金蝶EAS附件管理支持该操作。基于金蝶EAS·BOS平台开发时,建议直接使用标准产品附件功能。
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
import java.util.StringTokenizer;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPClient;
/**
* FTP操作工具类
* 该工具类依赖第三方Jar包(commons-net-3.6)
* 附件上传操作,建议直接采用标准产品相应功能,第三方包可能无法正常加载
* @author 郭旭
*
*/
public class FtpUtil {
/**FTP主机IP地址**/
protected static final String HOSTNAME = Resource.getValue("HOSTNAME");
/**FTP端口**/
protected static final String FTPPORT = Resource.getValue("FTPPORT");
/**FTP登录用户名**/
protected static final String USERNAME = Resource.getValue("USERNAME");
/**FTP登录用户密码**/
protected static final String PASSWORD = Resource.getValue("PASSWORD");
/**
* 文件上传到FTP服务器
* @param ftpPath FTP目标路径
* @param ftpName FTP文件名称
* @param filePath 本地文件绝对路径(不含文件名)
* @param fileName 本地文件名(含后缀)
* @return 是否成功
*
*/
public static boolean upload(String ftpPath, String ftpName, String filePath, String fileName) throws Exception{
boolean flag = false;
FTPClient ftp = new FTPClient();
ftp.setControlEncoding("UTF-8");
if(!filePath.endsWith("/")) filePath += "/";
InputStream input = new FileInputStream(new File(filePath + fileName));
try {
ftp.connect(HOSTNAME, Integer.parseInt(FTPPORT)); //连接FTP服务器
ftp.login(USERNAME, PASSWORD); //登录FTP服务器
if(!ftp.isConnected()) return flag; //是否成功登录FTP服务器
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
int replyCode = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
StringTokenizer token = new StringTokenizer(ftpPath, "/");
token.countTokens();
String pathName = "";
while (token.hasMoreElements()) {
pathName = pathName + "/" + (String) token.nextElement();
ftp.makeDirectory(pathName);
}
ftp.changeWorkingDirectory(ftpPath);
ftp.enterLocalPassiveMode();
flag = ftp.storeFile(ftpName, input);
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
ftp.logout();
} catch (IOException e) {
e.printStackTrace();
}
if(ftp.isConnected()){
try {
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
}