首页 ftp上传下载 java FTPClient

ftp上传下载 java FTPClient

举报
开通vip

ftp上传下载 java FTPClientftp上传下载 java FTPClient 项目需要,网上搜了搜,很多,但问题也不少,估计转来转去,少了不少东西,而且也情况 也不太一样。没办法,只能自己去写一个。一, 安装sserv-u ftp服务器 版本10.1.0.1 我所设服务器配置:用户名:shiyanming密码:123端口:21跟目录:d:/ftpindex 二、 所需jar包:common-net-1.4.1.jarjakarta-oro-2.0.8.jar 注意:第二个jar包必须要存 在,不然在列举ftp服务器中文件是出错 三、中文传输问...

ftp上传下载 java FTPClient
ftp上传下载 java FTPClient 项目需要,网上搜了搜,很多,但问题也不少,估计转来转去,少了不少东西,而且也情况 也不太一样。没办法,只能自己去写一个。一, 安装sserv-u ftp服务器 版本10.1.0.1 我所设服务器配置:用户名:shiyanming密码:123端口:21跟目录:d:/ftpindex 二、 所需jar包:common-net-1.4.1.jarjakarta-oro-2.0.8.jar 注意:第二个jar包必须要存 在,不然在列举ftp服务器中文件是出错 三、中文传输问题 四、具体程序 com.ftp. seforgeftputils.java package com.ftp;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 java.net.urlencoder;import javax.servlet.http.httpservletresponse;import org.apache.commons.net.ftp.ftp;import org.apache.commons.net.ftp.ftpclient;import org.apache.commons.net.ftp.ftpclientconfig;import org.apache.commons.net.ftp.ftpfile;import org.apache.commons.net.ftp.ftpreply;/** * @author shiyanming * */public class seforgeftputils { /** * 上传程序 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 * */ public boolean uploadfile(string url, int port, string username, string password, string path, string filename, inputstream input) { // filename:要上传的文件 // path :上传的路径 // 初始表示 上传失败 boolean success = false; // 创建ftpclient对象 ftpclient ftp = new ftpclient(); try { int reply; // 连接ftp服务器 // 如果采用默认端口,可以 使用ftp.connect(url)的方式直接连接ftp服务器 ftp.connect(url, port); // 下面 三行代码必须要,而且不能改变编码格式,否则不能正确下载中文文件 ftp.setcontrolencoding(";gbk";); ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt); conf.setserverlanguagecode(";zh";); // 登录ftp ftp.login(username, password); // 看返回的值是不是230,如果是,表 示登陆成功 reply = ftp.getreplycode(); // 以2开头的返回值就会为真 if (!ftpreply.ispositivecompletion(reply)) { ftp.disconnect(); system.out.println(";连接服务器失败";); return success; } system.out.println(";登陆服务器成功";); ftp.changeworkingdirectory(path);// 转 移到ftp服务器目录 ftpfile[] fs = ftp.listfiles(); // 得到目录的相应文件列表 system.out.println(fs.length); system.out.println(filename); string filename1 = seforgeftputils.changename(filename, fs); string filename2 = new string(filename1.getbytes(";gbk";), ";iso-8859-1";); string path1 = new string(path.getbytes(";gbk";), ";iso-8859-1";); // 转到指定上传目录 ftp.changeworkingdirectory(path1); // 将上传文件存储到指定目录 // ftp.appendfile(new string(filename.getbytes(";gbk";),";iso-8859-1";), // input); ftp.setfiletype(ftp.binary_file_type); //如果缺省该句 传输txt正常 但图片和其他格 式的文件传输出现乱码 ftp.storefile(filename2, input); // 关闭输入流 input.close(); // 退出ftp ftp.logout(); // 表示上传成功 success = true; system.out.println(";上传成功。。。。。。";); } catch (ioexception e) { e.printstacktrace(); } finally { if (ftp.isconnected()) { try { ftp.disconnect(); } catch (ioexception ioe) { } } } return success; } /** * 删除程序 * */ public boolean deletefile(string url, int port, string username, string password, string path, string filename) { // filename:要上传的文件 // path :上传的路径 // 初始表示上传失败 boolean success = false; // 创建ftpclient对象 ftpclient ftp = new ftpclient(); try { int reply; // 连 接ftp服务器 // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接ftp服 务器 ftp.connect(url, port); // 下面三行代码必须要,而且不能改变编码格式,否 则不能正确下载中文文件 ftp.setcontrolencoding(";gbk";); ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt); conf.setserverlanguagecode(";zh";); // 登录ftp ftp.login(username, password); // 看返回的值是不是230,如果是,表示登陆成功 reply = ftp.getreplycode(); // 以 2开头的返回值就会为真 if (!ftpreply.ispositivecompletion(reply)) { ftp.disconnect(); system.out.println(";连接服务器失败";); return success; } system.out.println(";登陆服务器成功";); string filename2 = new string(filename.getbytes(";gbk";), ";iso-8859-1";); string path1 = new string(path.getbytes(";gbk";), ";iso-8859-1";); // 转到指定上传目录 ftp.changeworkingdirectory(path1); ftpfile[] fs = ftp.listfiles(); // 得到目录 的相应文件列表 ftp.deletefile(filename2); ftp.logout(); success=true; } catch (ioexception e) {system.out.println(e); } finally { if (ftp.isconnected()) { try { ftp.disconnect(); } catch (ioexception ioe) { } } } return success; } /** * 下载程序 * */ public static boolean downfile(string ip, int port, string username, string password, string remotepath, string filename, outputstream outputstream, httpservletresponse response) { boolean success = false; ftpclient ftp = new ftpclient(); try { int reply; ftp.connect(ip, port); // 下面三行代码必须要,而且不能改变编码格式 ftp.setcontrolencoding(";gbk";); ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt); conf.setserverlanguagecode(";zh";); // 如果采用默认端口,可以使用ftp.connect(url) 的方式直接连接ftp服务器 ftp.login(username, password);// 登录 ftp.setfiletype(ftpclient.binary_file_type); reply = ftp.getreplycode(); if (!ftpreply.ispositivecompletion(reply)) { ftp.disconnect(); return success; } system.out.println(";登陆成功。。。。";); ftp.changeworkingdirectory(remotepath);// 转移到ftp服务器目录 ftpfile[] fs = ftp.listfiles(); // 得到目录的相应文件列表 // system.out.println(fs.length);// 打印列表长度 for (int i = 0; i <; fs.length; i++) { ftpfile ff = fs[i]; if (ff.getname().equals(filename)) { string filename = filename; // 这个就就 是弹出下载对话框的关键代码 response.setheader(";content-disposition";, ";attachment;filename="; + urlencoder.encode(filename, ";utf-8";)); // 将文件保存到输出流outputstream中 ftp.retrievefile(new string(ff.getname().getbytes(";gbk";), ";iso-8859-1";), outputstream); outputstream.flush(); outputstream.close(); } } ftp.logout(); success = true; } catch (ioexception e) { e.printstacktrace(); } finally { if (ftp.isconnected()) { try { ftp.disconnect(); } catch (ioexception ioe) { } } } return success; } // 判断是否有重名方法 public static boolean isdirexist(string filename, ftpfile[] fs) { for (int i = 0; i <; fs.length; i++) { ftpfile ff = fs[i]; if (ff.getname().equals(filename)) { return true; // 如果存在返回 正确信号 } } return false; // 如果不存在返回错误信号 } // 根据重 名判断的结果 生成新的文件的名称 public static string changename(string filename, ftpfile[] fs){ int n = 0; // 创建一个可变的字符串对象 即stringbuffer对象,把 filename值付给该对象 stringbuffer filename1 = new stringbuffer(";";); filename1 = filename1.append(filename); system.out.println(filename1); while (isdirexist(filename1.tostring(), fs)) { n++; string a = ";["; + n + ";]";; system.out.println(";字符串a的值是:"; + a); int b = filename1.lastindexof(";.";);// 最后一出现小数点的位置 int c = filename1.lastindexof(";[";);// 最后一次";[";出现的位置 if (c <; 0) { c = b; } stringbuffer name = new stringbuffer(filename1.substring(0, c));// 文件 的名字 stringbuffer suffix = new stringbuffer(filename1.substring(b + 1));// 后 缀的名称 filename1 = name.append(a).append(";.";).append(suffix); } return filename1.tostring(); } /** * @param args * @throws filenotfoundexception * 测试程序 */ public static void main(string[] args) throws filenotfoundexception { string path = ";";; file f1 = new file(";c:\\新.txt";); string filename = f1.getname(); system.out.println(filename); //inputstream input = new fileinputstream(f1); //seforgeftputils a = new seforgeftputils(); //a.uploadfile(";172.25.5.193";, 21, ";shiyanming";, ";123";, path, filename, input); /* * string path =";d:\\ftpindex\\";; file f2 = new * file(";d:\\ftpindex\\old.txt";); string filename2= f2.getname(); * system.out.println(filename2); seforgeftputils a = new * seforgeftputils(); a.downfile(";172.25.5.193";, 21, ";shi";, ";123";, path, * filename2, ";c:\\";); */ seforgeftputils a = new seforgeftputils(); a.deletefile(";192.168.0.100";, 21, ";shiyanming";, ";123";, path, filename); }}上边程序完成了文件的上传和下载重 命名判断问题,如果重名,在后边加(n)。存在问题:如果jsp页面中读取from表单的值, 只能获取主机的地址,不能上传客户端文件。 3.1、 默认情况下,ftpclient使用的 是utf_8字符集作为服务器通讯的编码集。而ftp服务器serv-u在windowsxp上,使用gbk 字符集作为服务器通讯。 // 下面三行代码必须要,而且不能改变编码格式,否则不能正 确下载中文文件 ftp.setcontrolencoding(";gbk";); ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt);conf.setserverlanguagecode(";zh";); 3.2、 同时还要设置服务器设置步骤: 1、打开serv-u 8.0控制台,点击“限制和设置”-- “为域配置高级ftp命令设置和行为”。 2、在ftp设置中找到opts utf8命令,右击 禁用此命令。3、点击下面的“全局属性”。 4、在出来的ftp命令属性选项卡中,“高 级选项”里,把“对所有收发的路径和文件名使用uft-8编码”前面的钩去掉~ 5、以 后再上传中文文件,就不会出现乱码问题啦。
本文档为【ftp上传下载 java FTPClient】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_348501
暂无简介~
格式:doc
大小:27KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-04-15
浏览量:16