//文件上传

public static boolean uploadToFTP(String url,int port,String username,String password,String path,String filename,InputStream input)

{

boolean success=false;

FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp

try{

if(port>-1)

{

ftp.connect(url,port);

}else{

ftp.connect(url);//ftp默认的端口是21

}

//很多人写的是用ftp.getReplyCode()给获取连接的返回值,但是这样会导致storeFileStream返回null

if(ftp.login(username,password))

{

ftp.enterLocalActiveMode();

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

//创建目录,如果存在会返回失败

ftp.makeDirectory(path);

//切换目录

ftp.changeWorkingDirectory(path);

//上传文件

//FTP协议规定文件编码格式为ISO-8859-1

filename=new String(filename.getBytes("GBK"),"ISO-8859-1");

OutputStream out=ftp.storeFileStream(filename);

byte[]byteArray=new byte[4096];

int read=0;

while((read=input.read(byteArray))!=-1)

{

out.write(byteArray,0,read);

}

out.close();

ftp.logout();

sucess=true;

}

}

catch(Exception e)

{

}

finally{

if(ftp.isConnected())

{

ftp.disConnecct();

}

}

}

//文件下载

public static boolean downloadFromFTP(String url,int port,String username,String password,String path,String localpath)

{

boolean success=false;

FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp

try{

int reply;

if(port>-1)

{

ftp.connect(url,port);

}else{

ftp.connect(url);//ftp默认的端口是21

}

//很多人写的是用ftp.getReplyCode()给获取连接的返回值,但是这样会导致storeFileStream返回null

ftp.login(username,password)

ftp.enterLocalActiveMode();

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

reply=ftp.getReplyCode();

if(!FTPReply.isPositionCompletion(reply))

{

ftp.disconnect();

return success;s

}

//切换目录 此处可以判断,切换失败就说明ftp上面没有这个路径

ftp.changeWorkingDirectory(path);

//上传文件

FTPFile[]fs=ftp.listFiles();

OutputStream out=null;

InputStream in=null;

for(int i=0;i

{

FTPFile ff=fs[i];

String outFileName=ff.getName();

//创建本地的文件时候要把编码格式转回来

String localFileName=new String(ff.getName().getBytes("ISO-8859-"),"GBK");

File localFile=new File(localpath+lcoalFileName);

out=new FileOutputStream(localFile);

in=ftp.retrieveFileStream(outFileName);

byte[]byteArray=new byte[4096];

int read=0;

while((read=in.read(byteArray))!=-1)

{

out.write(byteArray,0,read);

}

//这句很重要 要多次操作这个ftp的流的通道,要等他的每次命令完成

ftp.completePendingCommand();

out.flush();

out.close();

ftp.logout();

sucess=true;

}

catch(Exception e)

{

}

finally{

if(ftp.isConnected())

{

ftp.disConnecct();

}

}

}

上面代码都在博客园编辑器手敲的可能会有些错误,上面两种方式速度都很块 比上传用storeFile 下载用retrieveFile这种方法快很多

java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...相关推荐

  1. java如何处理csv文件上传_java处理csv文件上传示例

    前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. ReadCsvUtil工具类 package com.hanfengyeqiao.g ...

  2. java上传csv文件上传_java处理csv文件上传示例详解

    前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. readcsvutil工具类 package com.hanfengyeqiao.g ...

  3. java 远程接口 文件上传_java中远程http文件上传及file2multipartfile

    1 public static Map executeDriverServer(String driverUrl, Map param,String multipart, String content ...

  4. java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题

    废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...

  5. java http 上传大文件上传_java实现大文件的上传

    最近项目经理逼着让偶做树的展开,表嵌套表,可惜偶刚参加工作,水平低,这不在查资料嘛,可是不多久就传来了经理的叫嚣声,这么简单的东西,都一天了,你还没做完..................,哎真是郁闷 ...

  6. ubuntu下linux:curl使用ftp获取服务器上指定目录的所有文件集合以及下载

    curl使用ftp获取服务器上指定目录的所有文件集合以及下载 直接编译可用,注意修改测试main函数内的字符串,注释我觉得写的挺详细了,跑不起来的评论区可问 头文件 #ifndef FTP_DOWNL ...

  7. 文件上传linux服务器,Linux 文件上传Linux服务器

    进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...

  8. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

    搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...

  9. SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)

    SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...

  10. php 文件上传mime 类型,php文件上传类型(MIME)对照表

    网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特色),学php的人都知道文件上传怎么做,但很多人在编程中却 ...

最新文章

  1. 【NOIP校内模拟】T2 华莱士(环套树)
  2. 对话吴恩达:为什么说制造业会是首个聚焦AI转型的行业?
  3. 「天才少年」稚晖君调戏机械臂!加上AI视觉,2小时学会抓螺母
  4. [转]CSS3 transform顺序问题
  5. 【jQuery】parent()和parents遍历
  6. tomcat JRE_HOME
  7. springMVC源码分析
  8. (转)区间合并pushup函数模板
  9. java 8 并行_Java 8新特性之 并行和并行数组(八恶人-8)
  10. consul的安装搭建
  11. 【华为云技术分享】《跟唐老师学习云网络》 - Tcpdump大杀器抓包
  12. android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度
  13. Layui表单验证lay-verify属性
  14. matlab打靶法求解薛定谔方程,用MATLAB语言解氢原子与类氢离子的定态薛定谔方程...
  15. 编译原理——中间代码生成(逆波兰表示)
  16. css中“~”(波浪号)、“,”(逗号)、 “ + ”(加号)和 “ ”(大于号)是什么意思?
  17. 自定义android控件EditText边框背景
  18. Codingame平台“CHUCK NORRIS”的实现
  19. Unable to find instance for XXXX
  20. 502 Bad Gateway 怎么解决?

热门文章

  1. 如何通过 Impex 在 SAP Commerce Cloud 创建一个新的 Component
  2. SAP UI5 应用开发教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor
  3. 介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
  4. Angular Route数据结构里常用字段使用方法一览
  5. Angular jasmine returnValue方法的实现原理
  6. SAP Spartacus 关于列表点击focus Accessibility的需求
  7. 国内SAP UI5使用者关于性能优化和UI5 Web Component的讨论
  8. SAP Spartacus单元测试用例中Component构造函数的调用上下文
  9. SAP Hybris和Netweaver的租户隔离(Tenant isolation)机制设计
  10. SAP ABAP maintanence view的数据校验机制