如何使用ASP.NET C#Web表单下载包含单引号特殊字符的文件名
在我现有的应用程序中,文件名包含单引号(')特殊字符示例文件名:Zahed.doc。当我试图下载此文件时,我无法下载,因为文件名包含 下面是我上传的设计代码:如何使用ASP.NET C#Web表单下载包含单引号特殊字符的文件名,c#,asp.net,C#,Asp.net,在我现有的应用程序中,文件名包含单引号(')特殊字符示例文件名:Zahed.doc。当我试图下载此文件时,我无法下载,因为文件名包含 下面是我上传的设计代码: <asp:FileUpload ID="FileUpload1" runat="server" CssClass="textfield_new1" /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <
<asp:FileUpload ID="FileUpload1" runat="server" CssClass="textfield_new1" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:LinkButton ID="lnkbtn_ResumeUpload" runat="server" CssClass="cv_heading" OnClick="lnkbtn_ResumeUpload_Click"></asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
下面是我下载的文件设计代码:
<asp:FileUpload ID="FileUpload1" runat="server" CssClass="textfield_new1" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:LinkButton ID="lnkbtn_ResumeUpload" runat="server" CssClass="cv_heading" OnClick="lnkbtn_ResumeUpload_Click"></asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
我的问题是已经有800个用户上传了文件名,我无法下载该应用程序,如何解决这类问题 尝试使用HttpUtility.UrlEncode()对文件名进行编码 示例: 如果您的文件路径称为“path”,则需要首先对其进行编码,然后将其发送到javascript
string filePath = HttpUtility.UrlEncode(path);
System.Web.UI.ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "SCRIPT", "window.open('"+ filePath + "')", true);
另一种解决方案是HttpUtility.JavaScriptStringEncode,它将包含撇号的javascript字符串完全编码。问题是生成的javascript将被破坏,因为它将:
window.open('...Zahed's.doc');
因此“-字符将打断您的脚本。最简单的解决方案是将窗口打开部分代码中的“替换为”:
System.Web.UI.ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "SCRIPT", "window.open(\"" +ResumePath + path + "\")", true);
那么为什么我们要使用\呢?我会检查并更新我的答案。@Esko如果你想要”-字符串中的字符,你需要用\来转义它。在c#Hi-Esko中,这个文件名还有一个问题:Up\u dmd。imzhadk@gmail.com_In_zahed的简历´。文档未下载,请检查并确认@Esko您能否根据上述问题代码更新您的答案@纳维德