ftp上传java代码

欢迎转载http://www.cnblogs.com/shizhongtao/p/3345826.html》

  1. 上传代码就写个简单的小例子。首先要加入jar包。commons-net-1.4.1.jar,

如果是用的maven管理jar包的话,加入如下配置:

 <dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>1.4.1</version>
</dependency>
  1. 废话不多说,这里面给出代码:
 package com.bing.ftpupload;

 import java.io.File;

 import java.io.FileInputStream;

 import java.io.IOException;

 import java.io.InputStream;

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

 import org.apache.commons.net.ftp.FTPReply;

 public class FtpFileUpload

 {

          public static boolean uploadFile(String url,// FTP服务器hostname

                             int port,// FTP服务器端口

                             String username, // FTP登录账号

                             String password, // FTP登录密码

                             String path, // FTP服务器保存目录

                             String filename, // 上传到FTP服务器上的文件名

                             InputStream input // 输入流     )

          {

                    boolean result = false;

                    FTPClient ftp = new FTPClient();

                    // ftp.setControlEncoding("UTF-8");

                    ftp.setControlEncoding("UTF-8");

                    try

                    {

                             int reply;

                             ftp.connect(url, port);// 连接FTP服务器

                             // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

                             ftp.login(username, password);// 登录

                             reply = ftp.getReplyCode();

                             if (!FTPReply.isPositiveCompletion(reply))

                             {

                                      ftp.disconnect();

                                      return result;

                             }

                             ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

                             ftp.makeDirectory(path);

                             ftp.changeWorkingDirectory(path);

                             ftp.storeFile(filename, input);

                             input.close();

                             ftp.logout();

                             result = true;

                    }

                    catch (IOException e)

                    {

                             e.printStackTrace();

                    }

                    finally

                    {

                             if (ftp.isConnected())

                             {

                                      try

                                      {

                                                ftp.disconnect();

                                      }

                                      catch (IOException ioe)

                                      {

                                      }

                             }

                    }

                    return result;

          }

          /**

           * 将本地文件上传到FTP服务器上 *

           */

          public static boolean upLoadFromProduction(String url,// FTP服务器hostname

                             int port,// FTP服务器端口

                             String username, // FTP登录账号

                             String password, // FTP登录密码

                             String path, // FTP服务器保存目录

                             String filename, // 上传到FTP服务器上的文件名

                             String orginfilename // 输入流文件名

          )

          {

                    try

                    {

                             FileInputStream in = new FileInputStream(new File(orginfilename));

                             boolean flag = uploadFile(url, port, username, password, path,

                                                filename, in);
return flag;
}
catch (Exception e) {
e.printStackTrace(); } return false; } /** * 将本地文件上传到FTP服务器上 *这个方法和上面的方法作用一样,只是用了默认的文件名 */ public static boolean upLoadFromProduction(String url,// FTP服务器hostname
int port,// FTP服务器端口
String username, // FTP登录账号
String password, // FTP登录密码
String path, // FTP服务器保存目录
String orginfilename // 输入流文件名 ) {
try { String filename=new File(orginfilename).getName(); boolean flag = upLoadFromProduction(url, port, username, password, path,
filename, orginfilename);
return flag;
}
catch (Exception e) {
e.printStackTrace();
} return false; } }

对于上面代码中对应jar包的api地址:

https://commons.apache.org/proper/commons-net/javadocs/api-1.4.1/index.html

然后用junit测试下代码:

 @Test

     public void uploadfile()

     {

        String path="E:/updatexml/mph201392830451.xml";

        String url="192.168.3.57";

        int port=21;

        String username="gaea";

               String password="gaea";

        FtpFileUpload.upLoadFromProduction(url, port, username, password, "testxml", path);

     }

在上面的代码中,你如果想灵活点控制上传目录可以稍微修改下代码:

if (path!=null)
{
//在ftp根目录下穿件文件夹
ftp.makeDirectory(path);
//更改ftp上传的路径
ftp.changeWorkingDirectory(path);
}

这样如果你的path路径为空的话,就会上传到ftp的根目录下面。

注意:url如果写作"ftp:192.168.3.57";就会报异常,具体原因没有探究过

java.net.UnknownHostException: ftp:192.168.3.57

上一篇:一次线上tomcat应用请求阻塞的排查经过


下一篇:axis1.4开发webservice客户端(快速入门)-基于jdk1.4