纪念使用FTPClient工具所遇到的
我所使用的是org.apache.commons.net.ftp.FTPClient。 查了资料还有其余几个FTPClient,其余的先不展开。
1.ftpClient.changeWorkingDirectory一直返回false.
我的解决方法是所传入的参数不能是ftp://ip地址/data/vcode/ 这种形式的,而应该是/home/commonservice/data/vcode/这种形式的。网上查了很多方法也试了很多,都不对本次开发有效,有时候,是自己参数传的不对导致。
2.从ftp服务器下载含图片的zip包,下载下来后解压失败,说是文件已损坏。
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);加上这一句,以二进制的形式
3.ftpClient.retrieveFileStream 读取服务器中的命名文件
有以上这一行代码的话必须加
is.close();
ftpClient.completePendingCommand();
这两行,否则接下来的 ftpClient的操作就会失败
4.从ftp服务器下载的zip包到本地解压,解压失败
有时不是你代码有问题,而是ftp服务器上的这个zip包本来就解压不出来。我就遇到这个问题了,查了半天代码都没查出来。
5.主动模式和被动模式的概述
PORT(主动模式)
PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。
PASV(被动模式)
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输。
---------------------
两种模式的比较
从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
参考文献 http://www.cnblogs.com/mawanglin2008/articles/3607767.html
6.附上FTPClient的文档
http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html#changeWorkingDirectory(java.lang.String)
纪念使用FTPClient工具所遇到的的更多相关文章
- FTPClient 工具类
package com.photoann.core.util; import java.io.BufferedInputStream; import java.io.File; import java ...
- FTPClient工具类
package com.vcredit.ddcash.server.commons.net; import com.vcredit.ddcash.server.commons.model.FtpPar ...
- FTPClientUtil FTPclient工具
package com.ctl.util; //须要commons-net-3.0.1.jar import java.io.*; import java.net.*; import java.uti ...
- FTP上传心得
最近出了一个问题就是在本地上传FTP没有一点问题 可是部署到服务器上.上传的时候总是false.解决办法 ftp.enterLocalPassiveMode();boolean storeFile = ...
- 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战
"使用ctkPluginFramework插件系统构建项目实战",这篇文章是写博客以来最纠结的一篇文章. 倒不是由于技术都多么困难,而是想去描写叙述一个项目架构採用ctkPlugi ...
- 那些年伴我一起成长的SAP装备
今天这篇文章无关技术,我们来聊聊SAP装备,即打上了SAP logo的那些物品. 但凡在SAP圈子工作过一段时间的从业者们,手上或多或少都拥有一些此类装备.Jerry当然也不例外,这些装备无论物品本身 ...
- FtpServer穿透内网访问配置踩笔记
FtpServer穿透内网访问配置踩笔记 引言 FtpServer是服务器文件远程管理常用方式. 以前在局域网配置Ftp服务器以及使用公网上的Ftp服务均未碰到问题,固未对Ftp传输进行深入了解. 然 ...
- 入坑python 自己写的小工具,纪念一下
这个程序的功能是可以从表格中读取某一列数据,传到IDs 这一个参数里,然后在url中获取相应的请求值,并打印 import urllib.request import json import xlrd ...
- Java FtpClient 实现文件上传服务
一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...
随机推荐
- 分布式session个人理解浅谈
在分布式中,用户的session如何处理呢? 服务器中的原生session是无法满足需求的,因为用户的请求有可能随机落入到不同的服务器中,这样的结果将会导致用户的session丢失,传统做法中有解决方 ...
- 解决sublime text 3使用Install Package时出现There are no packages available for installation问题
package control一直弹出There are no packages available for installation,由于国内环境屏蔽了https://packagecontrol. ...
- 自学python之路(day1)
1. 下载和安装Pycharm文本编辑器,解释器Python3 2. 了解python2和python3的不同 如输出中文时,python2需要在代码前加 # -*- encoding:utf-8 - ...
- L347
Even Educators Believe These 7 Myths About Learning1. Individuals learn better when they receive inf ...
- 马凯军201771010116《面向对象与程序设计Java》第十三周学习总结
实验十三 图形界面事件处理技术 实验时间 2018-11-22 理论知识与学习部分 事件处理基础 事件源(event source):能够产生事件的对象都可 以成为事件源,如文本框.按钮等.一个事 ...
- 注意Delphi 10.3.1中Trunc函数的问题
10.3.1,Trunc(0.35*100)=34,出现这种情况!bug?
- Hadoop 搭建集群的步骤
1.安装jdk,配置环境变量 root@localhost java]# vi /etc/profile 在profile中添加如下内容: #set java environmentexport J ...
- IDEA Maven项目默认编译器使用JDK1.5的解决办法
在idea中创建maven项目,项目指定用jdk1.8编译,每次更新maven库后,都会重新变成1.5.解决方案: 第一种: 在pom文件中,增加如下代码: <properties> &l ...
- less语法
Linux中的less命令主要用来浏览文件内容,与more命令的用法相似,不同于more命令的是,less命令可往回卷动浏览以看过的部分,下面随小编一起来了解下less命令的具体用法吧. less 的 ...
- wav文件系列_2_Python实现读写
本文介绍了 Python 实现音频读写的方法.Python wave 模块提供便捷的 wav 文件操作.该模块并不支持压缩与解压,但支持单声道/立体声的转换. 参考: [1] wave — Read ...