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(); } 文件夹结构: 解决方法
试试以下,
还提供有关您的页面的更多信息.如果你使用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(); 编辑: LinkButton lb = e.Row.FindControl("btnLinkDownloadTender") as LinkButton; if (lb != null) ScriptManager.GetCurrent(this).RegisterPostBackControl(lb); 上面的代码将注册LinkBut??ton以导致完全回发,这将允许下载成功,在更新面板中上传文件时也是如此 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |