我正在构建一个应用程序,使用wcf将文件从客户端上传到服务器,我正在尝试实现一种方法,以便在连接失败时恢复上传。假设我有一个500 KB的文件,上传开始并且连接失败,只复制了100 KB。当我恢复时,服务器应用程序知道它有100 KB。
当我用这样的代码读取传输的流时:
while ((bytes = stream.Read(buffer, 0, bufferSize)) > 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();
}
我需要做些什么改变?
答案 0 :(得分:0)
不,偏移量指定缓冲区中开始复制从流中读取的字节的位置。
你可能想要做的是寻求。 Stream.Seek(100, SeekOrigin.Begin);
这具有“跳过”流中前100个字节的效果
那时,你会想要开始阅读......
如果您执行此恢复操作,那么我建议使用CRC或MD5等,以在完成后验证文件的内容。