我在Firefox中下载文件时遇到问题。我试图在旧帖子中找到解决方案,但我没有找到任何东西。我知道解决方案非常简单,但我认为今天不是我的幸运日:)。
简单的例子。我尝试从JavaScript调用Web方法并下载文件。
客户代码:
<script language="javascript" type="text/javascript">
function Test() {
PageMethods.Test(onCompleted);
}
function onCompleted(result) {
window.open(result);
}
</script>
........
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<div>
<input type=button value="Download" onclick="Test()"/>
</div>
服务器端:
[System.Web.Services.WebMethod]
public static string Test()
{
return "\\Files\\test.zip";
}
文件夹'文件'位于Web应用程序的根文件夹中。
对于IE和Chrome,此代码工作正常,我可以下载该文件。但在Firefox中,我收到一个错误:
>应用程序中的服务器错误。HTTP错误400 - 错误请求。
并在url中我可以看到例如: http://localhost:1406/ \文件\ test.zip
如何返回zip文件的正确路径?
答案 0 :(得分:1)
网址不允许使用反斜杠。
如果文件位于Windows网络服务器根目录下的\ Files \ test.zip,则该文件的正确URL为http:///Files/test.zip
答案 1 :(得分:0)
将服务器端代码更改为:
[System.Web.Services.WebMethod]
public static string Test()
{
return "/Files/test.zip";
}
网址应使用正斜杠而不是反斜杠。
答案 2 :(得分:0)
通常,您应该使用System.Web.UI.Control类的ResolveUrl方法。但是在静态方法的情况下,有一些workaround solutions。
答案 3 :(得分:-2)
替换以下行
[System.Web.Services.WebMethod]
public static string Test()
{
return "\\Files\\test.zip";
}
这些可能有用......
[System.Web.Services.WebMethod]
public static string Test()
{
return "\\\\Files\\test.zip";
}