Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ASP.NET C#Web表单下载包含单引号特殊字符的文件名_C#_Asp.net - Fatal编程技术网

如何使用ASP.NET C#Web表单下载包含单引号特殊字符的文件名

如何使用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> <

在我现有的应用程序中,文件名包含单引号(')特殊字符示例文件名:Zahed.doc。当我试图下载此文件时,我无法下载,因为文件名包含

下面是我上传的设计代码:

<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您能否根据上述问题代码更新您的答案@纳维德