wcf を使用してクライアントからサーバーにファイルをアップロードするアプリケーションを構築しており、接続が失敗した場合にアップロードを再開する方法を実装しようとしています。500 KB のファイルがあり、アップロードが開始されて接続に失敗し、100 KB だけがコピーされたとします。再開すると、サーバー アプリケーションは 100 KB あることを認識します。
次のようなコードで送信されたストリームを読むと:
while ((bytes = stream.Read(buffer, 0, bufferSize)) > 0)
- その 0 (オフセット) は、読み取りを開始するバイトですか??
もしそうなら、100から読み始めるべきですか?? 何かのようなもの:
while ((bytes = stream.Read(buffer, 100, bufferSize)) > 0)
次に、既存の不完全なファイルにバイトを追加しますか??
これは私のコードです:
using (FileStream fs = new FileStream(@"C:\" + name, FileMode.Append))
{
int bufferSize = 4 * 1024; // 4KB buffer
byte[] buffer = new byte[bufferSize];
int bytes;
while ((bytes = stream.Read(buffer, 100, bufferSize)) > 0)
{
fs.Write(buffer, 100, bytes);
fs.Flush();
}
stream.Close();
fs.Close();
}
どのような変更を加える必要がありますか??