0 0

使用commons-net的上传,偶尔会僵死20

各位同学,小弟遇到个上传的问题,工程使用了apache的commons-net-3.3.jar,以下是具体的描述。

代码:

    /** 
     * 上传文件到服务器,新上传和断点续传 
     * @param remoteFile 远程文件名,在上传之前已经将服务器工作目录做了改变 
     * @param localFile 本地文件File句柄,绝对路径 
     * @param processStep 需要显示的处理进度步进值 
     * @param ftpClient FTPClient引用 
     * @return 
     * @throws IOException 
     */  
    public UploadStatus uploadFile(String remoteFile,File localFile,FTPClient ftpClient,long remoteSize) throws IOException{  
        UploadStatus status;  
        //显示进度的上传  
        long step = localFile.length() / 100;  
        long process = 0;  
        long localreadbytes = 0L;  
        RandomAccessFile raf = new RandomAccessFile(localFile,"r");  

        //这一句,有时到了这里后,就会半天没反应
        OutputStream out = ftpClient.appendFileStream(new String(remoteFile.getBytes("GBK"),"iso-8859-1"));  


        //断点续传  
        if(remoteSize>0){  
            ftpClient.setRestartOffset(remoteSize);  
            process = remoteSize /step;  
            raf.seek(remoteSize);  
            localreadbytes = remoteSize;  
        }  
        byte[] bytes = new byte[1024];  
        int c;  
        while((c = raf.read(bytes))!= -1){  
            out.write(bytes,0,c);  
            localreadbytes+=c;  
            if(localreadbytes / step != process){  
                process = localreadbytes / step;  
                System.out.println("上传进度:" + process);  
                //TODO 汇报上传状态  
            }  
        }  
        out.flush();  
        raf.close();  
        out.close();  
        boolean result =ftpClient.completePendingCommand();  
        if(remoteSize > 0){  
            status = result?UploadStatus.Upload_From_Break_Success:UploadStatus.Upload_From_Break_Failed;  
        }else {  
            status = result?UploadStatus.Upload_New_File_Success:UploadStatus.Upload_New_File_Failed;  
        }  
        return status;  
    } 



主要是这一句代码:
      
 OutputStream out = ftpClient.appendFileStream(new String(remoteFile.getBytes("GBK"),"iso-8859-1"));  


由于需要做断点续传,使用了appendFileStream,上传一个文件到服务器,有时能够一次性的上传完毕,有时上传了一半,卡着不动了,点击取消后,再次上传是可以正常上传的,但也偶尔停止,走不到 out.write这里。
调试代码发现到了ftpClient.appendFileStream 就不走了。

问下,大家有没有谁遇到这样的问题呢?
2013年9月28日 17:22

2个答案 按时间排序 按投票排序

0 0

ftpClient也是远程访问,是否也有网络连接问题,可以加超时设置

2013年9月30日 10:48
0 0

implements Runnable看看

2013年9月29日 11:20

相关推荐

    commons-net-3.8.0-API文档-中文版.zip

    赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...

    commons-net-3.1-API文档-中文版.zip

    赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)版.zip 对应...

    commons-net-3.6-API文档-中英对照版.zip

    赠送jar包:commons-net-3.6.jar; 赠送原API文档:commons-net-3.6-javadoc.jar; 赠送源代码:commons-net-3.6-sources.jar; 赠送Maven依赖信息文件:commons-net-3.6.pom; 包含翻译后的API文档:commons-...

    commons-net-3.3-API文档-中文版.zip

    赠送jar包:commons-net-3.3.jar; 赠送原API文档:commons-net-3.3-javadoc.jar; 赠送源代码:commons-net-3.3-sources.jar; 赠送Maven依赖信息文件:commons-net-3.3.pom; 包含翻译后的API文档:commons-...

    commons-net-jar包.zip

    在这个"commons-net-jar包.zip"压缩包中,包含了两个版本的Apache Commons Net库:commons-net-3.3.jar和commons-net-3.4.jar。这两个版本虽然相差不大,但每个新版本通常会带来一些改进和修复,使得开发者能够更...

    commons-net-3.6

    3. **commons-net-examples-3.6.jar**:包含了一些示例代码,演示了如何使用Apache Commons Net库的各种功能。这些例子是学习和快速上手的良好起点,可以帮助开发者快速理解和应用库中的函数。 此外,压缩包中还有...

    commons-net-3.1-API文档-中英对照版.zip

    赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)-英语-对照版....

    commons-net-2.2-API文档-中文版.zip

    赠送jar包:commons-net-2.2.jar; 赠送原API文档:commons-net-2.2-javadoc.jar; 赠送源代码:commons-net-2.2-sources.jar; 赠送Maven依赖信息文件:commons-net-2.2.pom; 包含翻译后的API文档:commons-...

    commons-net-3.8.0-API文档-中英对照版.zip

    赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...

    commons-net-3.1.jar,3.3,3.6版本

    这个库在不同的版本中提供了各种功能的增强和优化,比如`commons-net-3.1.jar`, `commons-net-3.3.jar`, 和 `commons-net-3.6.jar`。下面将详细阐述这些版本中涉及的主要知识点: 1. **FTP(文件传输协议)支持**:...

    开发工具 commons-fileupload-1.3.2

    开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2...

    commons-net-3.6.jar

    给不能访问这个网站的或者不想麻烦的朋友方便下载,也就1资源分算是辛苦费吧,如果你能访问下面这个网址,你也可能自己去下载:https://mvnrepository.com/artifact/commons-net/commons-net

    完美解决:commons-net-1.4.1.jar包中ftp应用的几点问题

    使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.listFiles(path).length=0 怎么办? 下载本工具,彻底解决问题。 不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这...

    commons-net-3.3-API文档-中英对照版.zip

    赠送jar包:commons-net-3.3.jar; 赠送原API文档:commons-net-3.3-javadoc.jar; 赠送源代码:commons-net-3.3-sources.jar; 赠送Maven依赖信息文件:commons-net-3.3.pom; 包含翻译后的API文档:commons-...

    commons-net-3.6 jar包.zip

    本文将深入解析`commons-net-3.6.jar`包,了解其核心功能、使用方法以及在实际开发中的应用。 Apache Commons Net库自1999年以来就一直在为Java开发者提供服务,它的主要目标是提供一套全面且易于使用的API,用于...

    commons-net-ftp-2.0.jar.zip

    在这个特定的案例中,我们关注的是`commons-net-ftp-2.0.jar.zip`这个压缩包,它包含了Apache Commons Net FTP库的2.0版本。这个库对于Java开发者来说,是进行FTP文件传输的重要工具。 FTP是一种用于在互联网上传输...

    commons-net-3.3-3.4-3.5-3.6.zip

    在这个压缩包"commons-net-3.3-3.4-3.5-3.6.zip"中,包含了Apache Commons Net库的四个不同版本:3.3、3.4、3.5和3.6,这使得开发者可以根据项目的具体需求选择适合的版本。 Apache Commons Net库是Apache软件基金...

    commons-logging.jar

    commons-logging-1.0-javadoc.jar, commons-logging-1.0.1-javadoc.jar, commons-logging-1.0.1.jar, commons-logging-1.0.2-javadoc.jar, commons-logging-1.0.2.jar, commons-logging-1.0.3-javadoc.jar, commons-...

    commons-net-1.4.1.jar

    在这个版本中,我们聚焦于"commons-net-1.4.1.jar",这是一个专注于FTP(文件传输协议)功能的组件。该库为Java开发者提供了丰富的API,以便在他们的应用程序中轻松地集成FTP服务。 FTP是互联网上最古老的协议之一...

Global site tag (gtag.js) - Google Analytics