Request.Files [0] .InputStream在上传后显示不同的长度

时间:2011-10-06 03:46:58

标签: file-upload md5 httprequest inputstream

我正在尝试在用户将其上传到我的服务器时创建该文件的MD5,并将该请求与已发布的文件一起转发到我的服务,该服务使用以下方法重新检查已发布文件的MD5。

对于服务端的Request.Files [0] .InputStream,它总是显示不同的长度。有什么我不知道为什么这会显示发布文件的不正确长度?

if (context.Request.Files.Count > 0)
        {
            byte[] fileData = null;
            using (var binaryReader = new BinaryReader(context.Request.Files[0].InputStream))
            {
                fileData = binaryReader.ReadBytes((int)context.Request.Files[0].InputStream.Length);
                binaryReader.Close();
            }

            using (MD5 md5 = MD5.Create())
            {
                byte[] hashData = md5.ComputeHash(fileData);

                //loop for each byte and add it to StringBuilder
                for (int i = 0; i < hashData.Length; i++)
                {
                    FileMD5Hash.Append(hashData[i].ToString());
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

这不是创建byte []的正确方法。我使用了memorystream的toArray(),它对我来说很漂亮。