您好,欢迎访问一九零五行业门户网

java怎么实现上传文件到FTP

需求说明:将指定文件上传到ftp,上传成功后修改文件名。
获取文件名及路径(这里是从数据库获取,所以前面的代码就不cv了)
/** * 测试上传 * @param map 从数据库获取到的文件信息 (包含文件路径file_path 文件类型file_type等信息) */ public void testupdftpfile(map<string,object> map){ /*上传附件到ftp*/ fileinputstream inputstream = null; try { //找到要上传的文件 string originfilename = "e:\\work\\files\\"+map.get("file_path").tostring(); //转成流 inputstream = new fileinputstream(originfilename); //上传后的文件名+文件类型 string ftpname = "上传到ftp后的文件名."+map.get("file_type"); boolean updftpfile = ftpclientfile.uploadfile(ftpname,inputstream); if(updftpfile){ //打印下日志 system.out.println(("=======文件已上传到ftp========")); } } catch (exception e) { throw new businessexception("附件上传失败!"); } }
ftpclientfile工具类方法
import java.io.file;import java.io.fileinputstream;import java.io.filenotfoundexception;import java.io.ioexception;import org.apache.commons.net.ftp.ftpclient;import org.apache.commons.net.ftp.ftpfile;import org.apache.commons.net.ftp.ftpreply; import com.google.gson.jsonarray; /** * ftp 上传文件 * ftpclient commons.net 3.0.1版本 * @author lenovo * */public class ftpclientfile { private static final string hostname = "10.xx.xx.xx" ;//ftp ip private static final int port = 21;//ftp 端口号 private static final string username = "ftpname";//ftp 登录账号 private static final string password = "ftppsd"; //ftp 登录密码 private static final string pathname = "/";//ftp 工作路径 /** * 上传文件(可供action/controller层使用) * @param filename 上传到ftp服务器后的文件名称 * @param inputstream 输入文件流 * @return */ public static boolean uploadfile(string filename,fileinputstream inputstream){ boolean flag = false; ftpclient ftpclient = new ftpclient(); //设置超时 ftpclient.setconnecttimeout(60*60*1000); //设置编码 ftpclient.setcontrolencoding("utf-8"); try { //连接ftp服务器 ftpclient.connect(hostname, port); //登录ftp服务器 ftpclient.login(username, password); //是否成功登录ftp服务器 int replycode = ftpclient.getreplycode(); if(!ftpreply.ispositivecompletion(replycode)){ return flag; } system.out.println("===========登录ftp成功了=========="); ftpclient.setfiletype(ftpclient.binary_file_type); //切换路径 创建路径 ftpclient.makedirectory(pathname); ftpclient.changeworkingdirectory(pathname); ftpclient.enterlocalpassivemode(); //设置缓冲 ftpclient.setbuffersize(1024 * 1024 * 20); //保持连接 ftpclient.setkeepalive(true); boolean a = ftpclient.storefile(new string(filename.getbytes("utf-8"),"iso-8859-1"), inputstream); if(a){ system.out.println("===========创建文件成功=============="+a); string filename2 = filename+"aaa"; boolean status = ftpclient.rename(filename, filename2); if(status) system.out.println("===========修改文件名称成功=============="+status); } inputstream.close(); ftpclient.logout(); flag = true; } catch (exception e) { e.printstacktrace(); } finally{ if(ftpclient.isconnected()){ try { ftpclient.disconnect(); } catch (ioexception e) { e.printstacktrace(); } } } return flag; } /* public static void main(string[] args) { string originfilename = "c:\\users\\lenovo\\desktop\\xx.txt"; fileinputstream inputstream; try { inputstream = new fileinputstream(new file(originfilename)); boolean a = uploadfile("xx.txt","/104/",inputstream); system.out.println("上传文件成功============"+a); } catch (filenotfoundexception e) { e.printstacktrace(); } }*/ }
上传文件到ftp时 注意:是否有权限登录服务器/上传文件等操作。
默认在浏览器输入自己的ftp地址访问下看看 ftp://10.xx.xx.xx:端口号 登录看看
以上就是java怎么实现上传文件到ftp的详细内容。
其它类似信息

推荐信息