2012-01-04 427 views
1

我使用Apache的FTP客户端上传文件到FTP服务器。但问题是代码没有抛出异常,但上传的文件是空的。这可能是什么原因。 我上传了两次相同的文件,但名称不同,如下所示。空文件上传到FTP服务器

ftpClient.storeFile(fileDir+"//"+"actualFileName", inputStream)); 
    ftpClient.storeFile(fileDir+"//"+"differentFileName", inputStream)); 
+0

您没有在文本模式下上传二进制文件,是吗? – dasblinkenlight 2012-01-04 04:46:41

+0

我有可供上传的文件的InputStream,并且我已将文件类型设置为FTPClient的二进制文件 – user968880 2012-01-04 06:38:24

+0

发布您上传文件的代码,它可以帮助其他人识别逻辑中是否有任何错误。 – 2012-01-04 07:34:35

回答

0

我认为这是第二个文件结束为空。您应该重新创建第二次更新的inputStream(根据DRCB的评论),否则它将为空(它将在第一次上载时用完)。

+0

是否有一些wat保存输入流,因为它不可能重新创建。 – user968880 2012-01-04 09:56:04

+0

您可以将InputStream复制到一个字节数组中(使用commons-io在一行中执行此操作),并使用ByteArrayInputStream作为storeFile的源。 – artbristol 2012-01-04 11:30:06

0

一句话:“//”看起来有点奇怪,不应该是“/”吗?

您重复storeFile与相同的inputStream,它将被读到最后。 InputStream具有读取位置。因此第二个文件肯定是空的。另外不要忘记close()输入流不丢失文件句柄。