欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java使用commons-net实现FTP文件上传,,将文件或者图片保存在FT

来源: javaer 分享于  点击 40704 次 点评:28

Java使用commons-net实现FTP文件上传,,将文件或者图片保存在FT


将文件或者图片保存在FTP服务器上,使用commons-net包。```javaimport java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;

import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;

public class FTPUploader {

public String username = "";public String password = "";public String ip = "";public Integer port = 21;public FTPUploader(String username, String password, String ip, int port) {    this.username = username;    this.password = password;    this.ip = ip;    this.port = port;}public void upload(File file, String remoteFileName, String remoteFilePath)        throws Exception {    upload(ip, port, username, password, file, remoteFilePath,            remoteFileName);}private void upload(String ip, int port, String userName, String password,        File file, String remotePathName, String remoteName)        throws Exception {    FTPClient ftpClient = new FTPClient();    try {        ftpClient.connect(ip, port);        ftpClient.login(userName, password);        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);        ftpClient.enterLocalPassiveMode();        upload(ftpClient, file, remotePathName, remoteName);    } catch (Exception e) {        throw new Exception("upload to ftp faild");    } finally {        if (ftpClient != null &amp;&amp; ftpClient.isConnected()) {            try {                ftpClient.disconnect();            } catch (IOException e) {            }        }    }}private void upload(FTPClient ftpClient, File file, String remotePathName,        String remoteName) throws Exception {    changeDirectory(ftpClient, remotePathName);    uploadFile(ftpClient, file, remotePathName, remoteName);    backToRootDirectory(ftpClient);}private void changeDirectory(FTPClient ftpClient, String path)        throws IOException {    int nextSeperator = path.indexOf("/", 1);    String currentPath = null;    if (nextSeperator < 0) {        nextSeperator = path.length();        currentPath = path.substring(1, nextSeperator);        changeDirectory0(ftpClient, currentPath);        return;    } else {        currentPath = path.substring(1, nextSeperator);        changeDirectory0(ftpClient, currentPath);        changeDirectory(ftpClient, path.substring(nextSeperator));    }}private void changeDirectory0(FTPClient ftpClient, String path)        throws IOException {    if (!ftpClient.changeWorkingDirectory(path)) {        ftpClient.makeDirectory(path);    }    ftpClient.changeWorkingDirectory(path);}private void backToRootDirectory(FTPClient ftpClient) throws IOException {    ftpClient.changeWorkingDirectory("/");}private void uploadFile(FTPClient ftpClient, File file,        String remotePathName, String remoteName) throws Exception {    String localPathName = file.getAbsolutePath();    FTPFile[] files = ftpClient.listFiles(remoteName);    if (files.length == 1) {        if (!ftpClient.deleteFile(remoteName)) {            throw new Exception("fail to delete remote file ["                    + remotePathName + "] before uploading");        }    }    File f = new File(localPathName);    InputStream is = new FileInputStream(f);    if (!ftpClient.storeFile(remoteName, is)) {        is.close();    }    is.close();}

}

 测试 ```javaimport java.io.File;import org.junit.Before;import org.junit.Test;import com.isharec.jutils.ftp.FTPUploader;public class FTPUploaderTest {    private FTPUploader ftpUploader;    @Before    public void before() {        ftpUploader = new FTPUploader("username", "password",                "ip", 21);    }    @Test    public void testUploader() {        File f = new File("E:\\123.txt");        try {            ftpUploader.upload(f, "123.txt", "/aaa/test/");        } catch (Exception e) {            e.printStackTrace();        }    }}
相关栏目:

用户点评