2012-01-04 23 views
1

私はftpサーバにファイルをアップロードするためにapacheのFTPクライアントを使用しています。しかし、問題は、コードからスローされた例外はありませんが、アップロードされたファイルは空です。これの理由は何でしょうか。 同じファイルを2回アップロードしていますが、名前は以下のとおりです。空のファイルをftpサーバにアップロード

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

バイナリファイルをテキストモードでアップロードしていませんか? – dasblinkenlight

+0

アップロードするファイルのInputStreamを入手できました。FTPClient用のバイナリファイルとしてファイルタイプを設定しました。 – user968880

+0

ファイルをアップロードするために記述したコードを投稿すると、他のユーザーがロジックにエラーがあるかどうかを確認するのに役立ちます。 –

答えて

0

私は空になる2番目のファイルだとします。 2番目の更新(DRCBのコメントごと)のinputStreamを再作成する必要があります。そうしないと、空になります(最初のアップロードで使用されてしまいます)。

+0

再作成することができないので、入力ストリームを保存するためのワットがありますか? – user968880

+0

InputStreamをバイト配列にコピーすることができます(これを行うにはcommons-ioを1行で使用します)。storeFileのソースとしてByteArrayInputStreamを使用します。 – artbristol

0

コメント:「//」はちょっと変わったようですが、「/」ではないでしょうか?

storeFileを同じinputStreamで繰り返します。これは最後まで読み込まれます。 InputStreamには読み取り位置があります。したがって、2番目のファイルは確かに空です。また、入力ストリームがファイルハンドルを失わないようにclose()を忘れないでください。

関連する問題