java实现上传和下载工具类
程序员文章站
2024-03-31 11:04:10
本文实例为大家分享了文件上传到ftp服务工具类,供大家参考,具体内容如下
直接引用此java工具类就好
import java.io.file;
impo...
本文实例为大家分享了文件上传到ftp服务工具类,供大家参考,具体内容如下
直接引用此java工具类就好
import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import org.apache.commons.net.ftp.ftp; import org.apache.commons.net.ftp.ftpclient; import org.apache.commons.net.ftp.ftpfile; import org.apache.commons.net.ftp.ftpreply; /** * ftp上传下载工具类 * <p>title: ftputil</p> * <p>description: </p> * <p>company: www.itcast.com</p> * @author 入云龙 * @date 2015年7月29日下午8:11:51 * @version 1.0 */ public class ftputil { /** * description: 向ftp服务器上传文件 * @param host ftp服务器hostname * @param port ftp服务器端口 * @param username ftp登录账号 * @param password ftp登录密码 * @param basepath ftp服务器基础目录 * @param filepath ftp服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basepath+filepath * @param filename 上传到ftp服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadfile(string host, int port, string username, string password, string basepath, string filepath, string filename, inputstream input) { boolean result = false; ftpclient ftp = new ftpclient(); try { int reply; ftp.connect(host, port);// 连接ftp服务器 // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接ftp服务器 ftp.login(username, password);// 登录 reply = ftp.getreplycode(); if (!ftpreply.ispositivecompletion(reply)) { ftp.disconnect(); return result; } //切换到上传目录 if (!ftp.changeworkingdirectory(basepath+filepath)) { //如果目录不存在创建目录 string[] dirs = filepath.split("/"); string temppath = basepath; for (string dir : dirs) { if (null == dir || "".equals(dir)) continue; temppath += "/" + dir; if (!ftp.changeworkingdirectory(temppath)) { if (!ftp.makedirectory(temppath)) { return result; } else { ftp.changeworkingdirectory(temppath); } } } } //设置上传文件的类型为二进制类型 ftp.setfiletype(ftp.binary_file_type); //上传文件 if (!ftp.storefile(filename, input)) { return result; } input.close(); ftp.logout(); result = true; } catch (ioexception e) { e.printstacktrace(); } finally { if (ftp.isconnected()) { try { ftp.disconnect(); } catch (ioexception ioe) { } } } return result; } /** * description: 从ftp服务器下载文件 * @param host ftp服务器hostname * @param port ftp服务器端口 * @param username ftp登录账号 * @param password ftp登录密码 * @param remotepath ftp服务器上的相对路径 * @param filename 要下载的文件名 * @param localpath 下载后保存到本地的路径 * @return */ public static boolean downloadfile(string host, int port, string username, string password, string remotepath, string filename, string localpath) { boolean result = false; ftpclient ftp = new ftpclient(); try { int reply; ftp.connect(host, port); // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接ftp服务器 ftp.login(username, password);// 登录 reply = ftp.getreplycode(); if (!ftpreply.ispositivecompletion(reply)) { ftp.disconnect(); return result; } ftp.changeworkingdirectory(remotepath);// 转移到ftp服务器目录 ftpfile[] fs = ftp.listfiles(); for (ftpfile ff : fs) { if (ff.getname().equals(filename)) { file localfile = new file(localpath + "/" + ff.getname()); outputstream is = new fileoutputstream(localfile); ftp.retrievefile(ff.getname(), is); is.close(); } } ftp.logout(); result = true; } catch (ioexception e) { e.printstacktrace(); } finally { if (ftp.isconnected()) { try { ftp.disconnect(); } catch (ioexception ioe) { } } } return result; } public static void main(string[] args) { try { fileinputstream in=new fileinputstream(new file("d:\\temp\\image\\gaigeming.jpg")); boolean flag = uploadfile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images","/2015/01/21", "gaigeming.jpg", in); system.out.println(flag); } catch (filenotfoundexception e) { e.printstacktrace(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。