问题表现:本地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();但是不顶用..
求大神帮忙分析看看出错原因可能在哪,折腾我一个下午了.