作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 ASP 代码中,我有一个用于文件上传的 LinkButton:
<asp:Linkbutton ID="lnkContract" Text="" runat="server" Visible="false" onclick="lnkContract_Click"></asp:Linkbutton>
我设法用 C# 编写了一个代码,触发了 lnkContract_Click
中的文件下载。这里:
protected void lnkContract_Click(object sender, EventArgs e)
{
string[] strFileType = lnkContract.Text.Split('.');
string strPath = Server.MapPath("~") + FilePath.CUST_DEALS + lnkContract.Text;
Open(lnkContract.Text, strFileType[1], strPath);
}
private void Open(string strFile, string strType, string strPath)
{
FileInfo fiPath = new FileInfo(@strPath);
//opens download dialog box
try
{
Response.Clear();
Response.ContentType = "application/" + strType.ToLower();
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + strFile + "\"");
Response.AddHeader("Content-Length", fiPath.Length.ToString());
Response.TransmitFile(fiPath.FullName);
HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.Clear();
}//try
catch
{
ucMessage.ShowMessage(UserControl_Message.MessageType.WARN, CustomerDefine.NOFILE);
}//catch if file is not found
}
当我点击 LinkButton
该文件会自动下载,但当我打开该文件时,它已损坏(或者如果文件是 .jpeg
,则该文件显示“x”)。我哪里出错了?
更新LinkButton 在 UpdatePanel 下。
最佳答案
将第二个 Response.Clear();
替换为 Response.End();
以刷新缓冲区并将所有数据发送到客户端。
但是您的代码会遇到问题,即 Response.End()
实际上会导致线程中止异常,因此,您应该更具体地描述捕获的异常。
更新:
在您的评论中,您提到这是在 UpdatePanel
中运行的。在那种情况下,这将不起作用。您将不得不强制该链接按钮执行常规回发而不是 ajax 回发。
关于c# - 从 LinkButton 下载时文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737337/
我是一名优秀的程序员,十分优秀!