0

私のプロジェクトではFTPWebRequestクラスを使用してPDFファイルをアップロードしています。ファイルをアップロードするために、(FtpWebRequest)WebRequestのオブジェクトからGetRequestStream()を取得することにより、Writeメソッドを使用しています。

ファイルをアップロードした後、ファイルを読み取って長さ(ファイルのサイズ)を取得します。同じようにFtpWebResponseのGetResponseStreamメソッドを使用しています。

ファイルサイズが小さい場合はすべて正常に機能しますが、重いファイルがアップロードされると、アクセスが拒否されたという「550」エラーが発生します。

大きなファイルがFTPで書き込まれているときに、ストリームを閉じた後、すぐにファイルを読み取ろうとすると、アクセスが拒否されるという問題が発生するようです。FTPサーバーがファイルからロックを解除していないか、ファイルを書き込んでいる可能性があります。ストリームから。

この問題をどのように取り除くことができますか。ファイルのアップロードに使用されているストリームを閉じているときに、FTPサーバーにファイルが正常に書き込まれたことを確認するイベントまたは方法はありますか?

4

1 に答える 1

0

理由はわかりませんが、次の手順でこの問題を解決できました

  1. FTP サーバーのバッファ サイズを低く設定します。通常は 64 K ですが、32 K に設定できます

  2. One go で送信すると、データはバッファに保持され、ファイルの読み取りを要求するとエラーが表示されるため、チャンクをストリームで送信するのではなく、サーバーに送信します。

于 2011-07-05T14:56:01.003 に答える