`
lydawen
  • 浏览: 471799 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Apache FTPClient storeFile 僵死 上传文件大小为 0

    博客分类:
  • java
阅读更多

RT,使用FTPClient做FTP上传,由quartz来定时运行(2分钟一次),之前在生产环境调试没问题,一些时间后现场反馈不能上传了,当出现10个扫描文件的日志后就不再出现了(扫描文件日志为每次运行任务前先扫描指定目录并输出需要上传的文件件数 ),后来发现因为quartz在这种配置下,默认同任务线程池最多只启动10个线程,由此可见是因为之前的任务并没有运行结束,按照正常,这个任务完全可以在1,2秒内运行完。

   经过多次跟踪,发现问题出在上传文件那个过程。storeFile这个方法得不到服务端的响应,导致程序一直僵死。

  从FTP服务器上的日志看到客户端正常登录,切换二进制模式,上传文件都正常,就是上传的文件大小永远都是0。询问现场在之前联调成功后修改过什么配置没,对方表示未修改过。后来想了想,FTP有两种模式:主动模式,被动模式;关于两种模式的区别可以网上搜一下。而FTPClient默认使用主动模式,将其改为被模式后一切正常,由此可见在上次联调成功后,现场对网络相关配置(例如防火墙规则)做过修改,导致主动模式不能正常上传文件了。

   除此之外,还有一种情况,手工使用ftp命令或工具上传成功,但使用程序则不行,有可能是操作系统防火墙阻止了程序的这种操作,可将防火墙关闭以验证是否此原因导致。

 

 

  

分享到:
评论
4 楼 xujiadai 2014-08-29  
楼主,给力,我设置后就好了。          
ftp.enterLocalPassiveMode();
3 楼 timer_yin 2011-12-15  
解决了困扰我的问题了,谢谢分享,受益匪浅
2 楼 joeytang 2011-08-02  
  受益匪浅
1 楼 阳光空气水 2011-05-11  
ftpClient.enterLocalPassiveMode();

感谢楼主,这个问题困扰我好久了,经你的提示,设置成被动后,一切正常。

相关推荐

    Apache FTPClient操作FTP工具类

    Apache FTPClient操作FTP工具类

    java利用FTPClient实现上传下载文件.doc

    Java 中使用 FTPClient 实现上传下载文件 Java 中使用 FTPClient 实现上传下载文件是 Java 程序中经常需要和 FTP 打交道的重要内容。FTPClient 是 Jakarta Commons 中的一个工具类,位于 Commons Net 包中。...

    调用FtpClient类上传文件(java)

    本主题将深入探讨如何使用`FtpClient`类从Apache Commons Net库来实现文件上传功能。Apache Commons Net提供了丰富的FTP操作接口,使得开发者能够方便地执行包括上传、下载、删除等在内的各种FTP操作。 首先,我们...

    java FTPClient 文件上传下载文件

    ### Java FTPClient 文件上传下载知识点详解 #### 一、引言 在现代软件开发中,文件传输是一项基本而重要的功能。对于Java开发者来说,利用Java的FTPClient进行文件的上传和下载是常见的需求之一。本篇文章将围绕...

    apache FTPClient commons-net-3.5-src.rar

    Apache FTPClient是Apache Commons Net库中的一个组件,用于在Java应用程序中实现FTP(文件传输协议)客户端的功能。这个源码库,"commons-net-3.5-src.rar",提供了FTPClient的完整源代码,让我们可以深入理解其...

    ftpclient 文件上传、下载、删除

    FTPClient是Java中实现FTP功能的一个库,它提供了丰富的API,使得开发者能够方便地与FTP服务器进行交互,包括上传、下载和删除文件。在这个项目中,我们将会深入探讨如何使用FTPClient来完成这些操作。 首先,要...

    获取FTP服务器上的文件大小源码

    通过FTP,用户可以连接到远程服务器,进行文件的上传、下载、查看属性等操作。本篇文章将详细讲解如何编写源码来获取FTP服务器上的文件大小,这对于监控服务器存储空间或者自动化任务是非常实用的。 首先,我们需要...

    用org.apache.commons.net.ftp.FTPClient包实现简单文件下载

    在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...

    使用FTPClient实现文件的上传下载

    这篇博客“使用FTPClient实现文件的上传下载”显然关注的是如何利用编程接口FTPClient来执行FTP操作,如上传和下载文件。FTPClient是Apache Commons Net库的一部分,它为Java开发者提供了方便的API来实现FTP功能。 ...

    使用FTPClient实现ftp文件上传

    FTPClient提供`storeFile()`方法来上传文件。在上传前,确保文件已经完全打开并准备就绪: ```java File localFile = new File("path/to/local/file"); OutputStream outputStream = ftpClient.storeFileStream(...

    FTPClient (apache)上传下载

    FTPClient (apache) 上传下载示例代码

    Apache的FTPClient.jar

    4. 文件传输:`FTPClient.retrieveFile(String remote, OutputStream local)`用于从服务器下载文件,`FTPClient.storeFile(String remote, InputStream local)`用于上传文件。 5. 文件管理:可以使用`FTPClient....

    FTPClient 文件上传

    我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手。我在项目开发的过程中主要用到了文件的上传功能,希望大家能学的一些东西

    apache java ftpclient

    然后使用`FTPClient.storeFile()`方法上传文件。 4. **文件下载** 下载文件的过程类似,但使用`FTPClient.retrieveFile()`方法。确保文件输出流正确设置,以便将下载的数据写入本地文件。 5. **查看远程目录** ...

    Java使用Apache的FTPClient操作ftp

    Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦

    apache FTP 工具类

    - `FTPClient.storeFile(String remote, InputStream local)`:将本地文件流上传到远程服务器 - `FTPClient.retrieveFile(String remote, OutputStream local)`:从远程服务器下载文件到本地输出流 - `FTPClient....

    FTPUpload上传文件 进度条显示进度

    4. **创建`JProgressBar`**:在Swing界面中添加一个`JProgressBar`,并设置其最小值为0,最大值为文件大小。文件大小可以通过`FTPClient.setFileSize()`方法获取。 5. **设置监听器**:创建一个`...

    Java常用FTP文件操作说明Apache.FTPClient,ftp4j,jftp

    ### Java常用FTP文件操作详解:Apache.FTPClient, ftp4j, jftp 在Java开发过程中,通过FTP(File Transfer Protocol)进行文件传输是一项常见需求。本文将详细讲解三种常用的FTP客户端库——Apache.FTPClient、ftp4...

    使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)

    4. **上传文件**:调用`FTPClient.storeFile(String remote, InputStream local)`,将本地文件上传至服务器。`remote`是服务器上的目标文件名,`local`是从本地读取的输入流。 5. **下载文件**:使用`FTPClient....

    apache实现ftp上传

    接下来,我们可以使用 storeFile 方法上传文件。该方法将文件从本地文件系统上传到 FTP 服务器上。在上传过程中,我们可以使用 setBufferSize 方法来设置缓冲区的大小,以提高上传速度。 FTP 下载 除了上传文件外...

Global site tag (gtag.js) - Google Analytics