我的asp.net
项目中有一个按钮,点击excel表后,我还要显示该文件的MD5 hash
代码。应用程序工作正常,但标签没有显示,但在调试时,哈希代码生成并且它也成功分配给标签,但它没有显示在前端。
请帮我解决这个问题。我的代码看起来像这样。
protected void btnDownload_Click(object sender, EventArgs e) {
pnlHashCode.Visible = true;
lblHashCode.Visible = true;
string strURL = "UploadHONMarks.xls";
WebClient req = new WebClient();
pnlHashCode.Visible = true;
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.Buffer = true;
response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "UploadHONMarks.xls"));
Response.ContentType = "Application/x-msexcel";
response.TransmitFile(Server.MapPath(strURL));
string filename = Server.MapPath("UploadHONMarks.xls");
byte[] hashBytes;
MD5 md5Hash = MD5.Create();
hashBytes = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(filename));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++) {
sBuilder.Append(hashBytes[i].ToString("x2"));
}
pnlHashCode.Visible = true;
lblHashCode.Text = sBuilder.ToString();
}
答案 0 :(得分:0)
您在同一回复中发送内容处置(用于文件下载),并且您还想修改网页。这是不可能的,因为浏览器只能处理一种类型的响应。
选项包括:
浏览器不知道如何在同一响应中处理两种不同类型的操作。在这种情况下,最好的选择是首先发送MD5哈希作为异步响应,以及下载的链接。例如,在sourceforge.net或microsoft.com等网站中,当您下载文件时,网站会首先将您重定向到另一个页面,然后开始下载。这是因为他们想要发送两条消息(广告和下载,或MD5和您的情况下的下载)。
另一种选择是在点击响应中发送MD5并添加隐藏的链接或按钮文件。因此,使用MD5,您可以触发一个javascript函数,使&#34; click&#34;链接上的事件,下载文件。像这样的技巧可以在同一个响应中伪造两个不同的动作。
答案 1 :(得分:-1)
根据您提供给我的问题的答案,这是我的建议。放在 lblHashCode.Visible = false;在!IsPostBack检查。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblHashCode.Visible = false;
}
}