一个ftp文件上传的工具类
使用步骤:
1、导入的jar包:commons-net-3.0.1.jar
2、网上下载一个如下图的ftp快捷配置开启工具,或者百度电脑ftp开启顺序,开启介绍有很多,我就不一一赘述了:
工具里面的配置要和下面的一致:
this.userName = "test";
this.pwd = "test";
this.host = "192.168.1.1";//开启ftp工具的ip地址
this.port = 21;
3、调用的java实例
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import javax.imageio.ImageIO;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPUtil {
private String userName;
private String pwd;
private String host;
private int port;
private static FTPClient client;
public FTPUtil(String userName, String pwd, String host, int port) {
super();
this.userName = userName;
this.pwd = pwd;
this.host = host;
this.port = port;
}
public FTPUtil() {
super();
this.userName = "test";
this.pwd = "test";
this.host = "192.168.1.1";
this.port = 21;
}
/************************ ftpclient ***********************************/
public boolean ftpConnect() {
if (client == null || !client.isConnected()) {
if (client == null)
client = new FTPClient();
client.setControlEncoding("UTF-8");
client.setDefaultPort(port);
try {
client.connect(host);
boolean flag = client.login(userName, pwd);
if (flag && !FTPReply.isPositiveCompletion(client.getReplyCode())) {
client.disconnect();
return false;
}
} catch (SocketException e) {
if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ioe) {
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ioe) {
}
}
}
}
return true;
}
/**
* 文件删除
* @param fileName 文件名
* @param dirpath 文件夹位置
* @return
*/
public boolean delete(String fileName, String dirpath) {
boolean success = false;
ftpConnect();
try {
if (dirpath != null)
client.changeWorkingDirectory(dirpath);
for (int i = 0; i < client.listFiles(fileName).length; i++)
//System.out.println(client.listFiles(fileName)[i].getName());
success = client.deleteFile(fileName);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
/**
* 上传
*
* @param is 需上传的文件流
* @param dirpath 目标路径
* @param dirFileName 目标文件名
* @return
*/
public boolean upload(InputStream is, String dirpath, String dirFileName) {
boolean success = false;
if (!ftpConnect()) {
success = true;
return success;
}
try {
client.setFileType(FTP.BINARY_FILE_TYPE);
if (dirpath != null)
client.changeWorkingDirectory(dirpath);
client.storeFile(dirFileName, is);
is.close();
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ioe) {
}
}
}
success = true;
return success;
}
//测试方法
public static void main(String[] args) throws IOException {
FTPUtil util = new FTPUtil();
util.upload(util.resizeImg(100, 100, new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\q.jpg")), "png"), null, "test.png");
}
}
该上传方法的一个好处就是能根据ip地址上传,从而可以实现客户端服务器和图片服务器或者多个图片服务器分离,对多文件对图片上传操作是一个很好的解决方法