ftp上传java代码

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

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

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

1 <dependency>
2            <groupId>commons-net</groupId>
3            <artifactId>commons-net</artifactId>
4             <version>1.4.1</version>
5 </dependency>
  1. 废话不多说,这里面给出代码:
  1 package com.bing.ftpupload;
  2 
  3 import java.io.File;
  4 
  5 import java.io.FileInputStream;
  6 
  7 import java.io.IOException;
  8 
  9 import java.io.InputStream;
 10 
 11 import org.apache.commons.net.ftp.FTPClient;
 12 
 13 import org.apache.commons.net.ftp.FTPReply;
 14 
 15  
 16 
 17 public class FtpFileUpload
 18 
 19 {
 20 
 21         
 22 
 23          public static boolean uploadFile(String url,// FTP服务器hostname
 24 
 25                             int port,// FTP服务器端口
 26 
 27                             String username, // FTP登录账号
 28 
 29                             String password, // FTP登录密码
 30 
 31                             String path, // FTP服务器保存目录
 32 
 33                             String filename, // 上传到FTP服务器上的文件名
 34 
 35                             InputStream input // 输入流     )
 36 
 37          {
 38 
 39                    boolean result = false;
 40 
 41                    FTPClient ftp = new FTPClient();
 42 
 43                    // ftp.setControlEncoding("UTF-8");
 44 
 45                    ftp.setControlEncoding("UTF-8");
 46 
 47                    try
 48 
 49                    {
 50 
 51                             int reply;
 52 
 53                             ftp.connect(url, port);// 连接FTP服务器
 54 
 55                             // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
 56 
 57                             ftp.login(username, password);// 登录
 58 
 59                             reply = ftp.getReplyCode();
 60 
 61                             if (!FTPReply.isPositiveCompletion(reply))
 62 
 63                             {
 64 
 65                                      ftp.disconnect();
 66 
 67                                      return result;
 68 
 69                             }
 70 
 71                             ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
 72 
 73                             ftp.makeDirectory(path);
 74 
 75                             ftp.changeWorkingDirectory(path);
 76 
 77                             ftp.storeFile(filename, input);
 78 
 79                             input.close();
 80 
 81                             ftp.logout();
 82 
 83                             result = true;
 84 
 85                    }
 86 
 87                    catch (IOException e)
 88 
 89                    {
 90 
 91                             e.printStackTrace();
 92 
 93                    }
 94 
 95                    finally
 96 
 97                    {
 98 
 99                             if (ftp.isConnected())
100 
101                             {
102 
103                                      try
104 
105                                      {
106 
107                                                ftp.disconnect();
108 
109                                      }
110 
111                                      catch (IOException ioe)
112 
113                                      {
114 
115                                      }
116 
117                             }
118 
119                    }
120 
121                    return result;
122 
123          }
124 
125          /**
126 
127           * 将本地文件上传到FTP服务器上 *
128 
129           */
130 
131          public static boolean upLoadFromProduction(String url,// FTP服务器hostname
132 
133                             int port,// FTP服务器端口
134 
135                             String username, // FTP登录账号
136 
137                             String password, // FTP登录密码
138 
139                             String path, // FTP服务器保存目录
140 
141                             String filename, // 上传到FTP服务器上的文件名
142 
143                             String orginfilename // 输入流文件名
144 
145          )
146 
147          {
148 
149                    try
150 
151                    {
152 
153                             FileInputStream in = new FileInputStream(new File(orginfilename));
154 
155                             boolean flag = uploadFile(url, port, username, password, path,
156 
157                                                filename, in);
158                             return flag;
159                    }
160                    catch (Exception e)
161 
162                    {
163                             e.printStackTrace();
164 
165                    }
166 
167                    return false;
168 
169          }
170 
171          /**
172 
173           * 将本地文件上传到FTP服务器上
174 
175 *这个方法和上面的方法作用一样,只是用了默认的文件名
176 
177           */
178 
179          public static boolean upLoadFromProduction(String url,// FTP服务器hostname
180                             int port,// FTP服务器端口
181                             String username, // FTP登录账号
182                             String password, // FTP登录密码
183                             String path, // FTP服务器保存目录
184                             String orginfilename // 输入流文件名
185 
186                             )
187 
188          {
189                    try
190 
191                    {
192 
193                             String filename=new File(orginfilename).getName();
194 
195                             boolean flag = upLoadFromProduction(url, port, username, password, path,
196                                                filename, orginfilename);
197                             return flag;
198                    }
199                    catch (Exception e)
200 
201                    {
202                             e.printStackTrace();
203                    }
204 
205                    return false;
206 
207          }
208 
209 }

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

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

然后用junit测试下代码:

 1 @Test
 2 
 3     public void uploadfile()
 4 
 5     {
 6 
 7        String path="E:/updatexml/mph201392830451.xml";
 8 
 9        String url="192.168.3.57";
10 
11        int port=21;
12 
13        String username="gaea";
14 
15               String password="gaea";
16 
17        FtpFileUpload.upLoadFromProduction(url, port, username, password, "testxml", path);
18 
19     }

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

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

原文地址:https://www.cnblogs.com/shizhongtao/p/3345826.html