emrocky
emrocky
采纳率100%
2016-03-11 13:20 浏览 3.1k
已采纳

FTPclient 上传文件不完整

问题表现:本地zip包上传到FTP后压缩包中只有一个0KB的文件,整个ZIP包只占10B好像(大小记不清了,反正只有一个文件名,里面内容是空的,以记事本打开的话能看到一个问号)
问题详情:
项目中是有一个单独的FTP上传类的,上传的方法是这样的:

public >
...

public boolean upload(String ftppath,String localfilepath){

...

//前面的代码已经将工作目录设置好了

FileInputStream inputStream=new FileInputStream(localfilepath);

ftpClient.storeFile(filenam,localfilepath);

...

}

...

}

public static void main(String[]args){

myftpclient client=new myftpclient();

...//设置连接参数

client.upload("/export/abcd.csv.zip","D:/localtmp/export/abcd.csv.zip");

...

}

大体上的代码就是这样.

执行main函数时,文件是能完整的上传到ftp的.

在另一个类(跨包)中通过spring AutoWire(连接参数已在context中配置)注入之后,调用upload方法就会只上传一个10B大小的包含一个空文件的ZIP包.文件名和路径都是正确创建,就是文件没有内容.

我加过断点调试,传递的参数与main方法中是一致的,FTP socket的连接参数除了本地端口一直在变之外.其他都是一致的.

main方法执行结果正常,说明上传方法是没问题的.

文件成功在服务器创建,说明Spring注入的连接参数也是没问题的(吧?)

可是为什么main就能完整的上传文件,跨包类(一个在util包下,一个在service包下,)上传就是空文件,问题在哪呢?

stackoverflow上有个问题很相似,Apache Commons Ftp file uploaded 0 bytes

但他是0字节,我是10字节...而且我也试过答案中的加上和去掉ftpsClient.enterLocalPassiveMode();但是不顶用..

求大神帮忙分析看看出错原因可能在哪,折腾我一个下午了.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答 默认 最新

  • 已采纳
    wojiushiwo945you 毕小宝 2016-03-12 01:22

    检查下带你的异常分支,看看有没有异常信息。

    点赞 评论 复制链接分享
  • wangkang80 wangkang80 2016-03-14 02:40

    关于ftp操作,可参考项目:http://git.oschina.net/wangkang/llsfw

    内有ftp操作的封装源代码,

    希望能够帮到你.

    点赞 评论 复制链接分享

相关推荐