使用wcf恢复和上载文件

时间:2011-06-08 22:41:08

标签: wcf file uploading

我正在构建一个应用程序,使用wcf将文件从客户端上传到服务器,我正在尝试实现一种方法,以便在连接失败时恢复上传。假设我有一个500 KB的文件,上传开始并且连接失败,只复制了100 KB。当我恢复时,服务器应用程序知道它有100 KB。

当我用这样的代码读取传输的流时:

while ((bytes = stream.Read(buffer, 0, bufferSize)) > 0)
  1. 那是0(偏移)我开始读取的字节??
  2. 如果是这样,我应该从100开始阅读吗?类似的东西:

    while((bytes = stream.Read(buffer,100,bufferSize))> 0)

  3. 然后将字节附加到现有的不完整文件??

    这是我的代码:

    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();
    }
    

    我需要做些什么改变?

1 个答案:

答案 0 :(得分:0)

不,偏移量指定缓冲区中开始复制从流中读取的字节的位置。

你可能想要做的是寻求。 Stream.Seek(100, SeekOrigin.Begin);
这具有“跳过”流中前100个字节的效果 那时,你会想要开始阅读......

如果您执行此恢复操作,那么我建议使用CRC或MD5等,以在完成后验证文件的内容。