C# 下载后的文件MD5值不一样

stringserverurl=服务器地址;longfbytes;WebRequestwr_request=WebRequest.Create(serverurl);We... string serverurl =服务器地址;
long fbytes;
WebRequest wr_request = WebRequest.Create(serverurl);
WebResponse wr_response = wr_request.GetResponse();
fbytes = wr_response.ContentLength;//获取文件的字节数

WebClient web = new WebClient();
//以数组形式下载
web.DownloadData(new Uri(serverurl));
Stream strm = web.OpenRead(new Uri(serverurl));
StreamReader reader = new StreamReader(strm);
byte[] mbyte = new byte[fbytes];
int allmybyte = (int)mbyte.Length;
int startmbyte = 0;
while (fbytes > 0)
{
int m = strm.Read(mbyte, startmbyte, allmybyte);
if (m == 0) break;
startmbyte += m;
allmybyte -= m;
probar.Value += m;
}
FileStream fstrm = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
fstrm.Write(mbyte, 0, startmbyte);
strm.Close();
fstrm.Close();

这样下载完的文件 字节数是一样的 文件是完整的
但是校验MD5值时却不一样,不能验证文件的完整性?

//获取MD5的方法
public static string md5_hash(string path)
{
try
{
FileStream get_file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
System.Security.Cryptography.MD5CryptoServiceProvider get_md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] hash_byte = get_md5.ComputeHash(get_file);
string resule = System.BitConverter.ToString(hash_byte);
resule = resule.Replace("-", "");
return resule;
}
catch (Exception e)
{
return e.ToString();
}
}

如果我用web.DownloadFileAsync(serverurl)异步下载文件的话
下载后文件不完整,用web.DownloadFile(serverurl)下载的话会阻塞线程
因为我要可以看到下载进度的所以阻塞进程不好
请问用什么方法下载文件既能完整又能不阻塞线程并且文件能够校验完整性?
请诸位大侠帮帮忙。。。。 是WinForm程序
分不够还可以再加 在线等
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
bobo521aiwo
2010-08-19
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
web.DownloadFileAsync(serverurl)
没有问题
应该是你保存编码的问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2010-08-15 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6318万
展开全部
你这写的啥东西啊,你到底是用WebRequest还是WebClient啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
袁柏澹台聪
2020-04-09 · TA获得超过1044个赞
知道小有建树答主
回答量:1872
采纳率:100%
帮助的人:8.9万
展开全部
两个加密的结果是相同的,如果出现不同可能是你的encodint可能不一样,都换成acsii试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式