加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从UpdatePanel内的GridView中的链接下载文件失败

发布时间:2020-12-16 00:25:55 所属栏目:百科 来源:网络整理
导读:我试图通过asp.net中的FileUpload控件(即file.Docx等)在数据库中保存文件(图像,文字,pdf或任何类型).然后我希望将文件名显示为GridView中的链接,因此当用户单击它时,将下载该文件. 我尝试了一切.在调试中它什么都没显示.它到达Response.End的末尾但没有下载
我试图通过asp.net中的FileUpload控件(即file.Docx等)在数据库中保存文件(图像,文字,pdf或任何类型).然后我希望将文件名显示为GridView中的链接,因此当用户单击它时,将下载该文件.

我尝试了一切.在调试中它什么都没显示.它到达Response.End的末尾但没有下载任何内容.

网格视图:

<asp:TemplateField>
     <ItemTemplate>
        <asp:LinkButton ID="btnLinkDownloadTender" runat="server" Text='<%#  Eval("UploadedTenderPath") %>'CommandArgument='<%# Eval("UploadedTenderPath") %>' OnClick="DownloadTender"></asp:LinkButton>
     </ItemTemplate>
 </asp:TemplateField>

上传:

protected void UploadTender()
{
    try
    {
        if (FileUpload1.HasFile)
        {
            string fileName = Path.GetFileName(FileUpload1.FileName);
            FileUpload1.PostedFile.SaveAs(Server.MapPath("~/UploadedTenders/") + fileName);

            HdnFieldUploadedTender.Value = fileName;

            ResultLabel.ResultLabelAttributes("Tender Uploaded",ProjectUserControls.Enums.ResultLabel_Color.Red);
            ResultPanel.Controls.Add(ResultLabel);
        }
        else
        {
            ResultLabel.ResultLabelAttributes("No file specified",ProjectUserControls.Enums.ResultLabel_Color.Red);
            ResultPanel.Controls.Add(ResultLabel);
        }
    } 
}

下载:

protected void DownloadTender(object sender,EventArgs e)
{
    string filePath = (sender as LinkButton).CommandArgument;

    Response.ContentType = ContentType;
    Response.AppendHeader("Content-Disposition","attachment; filename=" + Path.GetFileName(filePath) );
    Response.Write(filePath);
    Response.End();
}

文件夹结构:

enter image description here

解决方法

试试以下,
还提供有关您的页面的更多信息.如果你使用chrome检查铬也没有阻止它

var fileInfo = new FileInfo(filePath);
Response.Clear();
Response.Buffer = true;
Response.AddHeader("Content-Disposition","attachment; filename=" + fileInfo.Name);
Response.AddHeader("Content-Length",fileInfo.Length.ToString(CultureInfo.InvariantCulture));
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(File.ReadAllBytes(fileInfo.FullName));
Response.Flush();
Response.End();

编辑:
在gridview Row Databound中添加以下内容

LinkButton lb = e.Row.FindControl("btnLinkDownloadTender") as LinkButton;
if (lb != null)
     ScriptManager.GetCurrent(this).RegisterPostBackControl(lb);

上面的代码将注册LinkBut??ton以导致完全回发,这将允许下载成功,在更新面板中上传文件时也是如此

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读