Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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
从另一台服务器打开intranet中的文件-ASP.Net C#_C#_Asp.net_Hyperlink - Fatal编程技术网

从另一台服务器打开intranet中的文件-ASP.Net C#

从另一台服务器打开intranet中的文件-ASP.Net C#,c#,asp.net,hyperlink,C#,Asp.net,Hyperlink,我有个问题。我的WebApp必须在浏览器中从另一台服务器上的本地资源打开文件,如果浏览器不支持该文件,则使用相关程序打开该文件。例如一些PDF、DOCX、XLSX文件。此服务器的路径存储在数据库中,如下所示:\server2\folder\file.pdf 我不得不说,我尝试了所有我想找到的东西,但我也发现没有解决办法。但我真的需要弄明白 我的应用程序是ASP.NETAjax、C#和Telerik组件 我尝试的是: - <a href="\\server2\folder\file.pdf"

我有个问题。我的WebApp必须在浏览器中从另一台服务器上的本地资源打开文件,如果浏览器不支持该文件,则使用相关程序打开该文件。例如一些PDF、DOCX、XLSX文件。此服务器的路径存储在数据库中,如下所示:\server2\folder\file.pdf

我不得不说,我尝试了所有我想找到的东西,但我也发现没有解决办法。但我真的需要弄明白

我的应用程序是ASP.NETAjax、C#和Telerik组件

我尝试的是:

- <a href="\\server2\folder\file.pdf">link</a>
- <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Link") %>' Target="_blank">HyperLink</asp:HyperLink>
- Responce.Redirect(path)
-
-超链接
-response.Redirect(路径)
它不工作,Chrome的响应如下:

不允许加载本地资源:file://server2/folder/file.pdf

有办法吗


编辑-修改问题的规范

如下指定资源URL

 <a href="file://///server2/folder/file.pdf">link</a>

如果客户端将从内部网络外部访问此链接,则需要在服务器端打开文件并将其流式传输到客户端。这需要使用您想要的路径链接到服务器应用程序中的新页面,然后使用该新页面将文件流式传输到客户端。例如,您的链接如下所示:

<a href="/DownloadFile.aspx?path=\\server2\folder\file.pdf">Link</a>
var path = Request.QueryString["path"];
Response.WriteFile(path);

对于那些和我有类似问题的人,有我的解决办法

这是无法实现的。所以我必须用参数创建一个新页面,参数的路径是文件。然后创建一个内存流并将其发送到客户端

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString.AllKeys.Contains("path"))
    {
        string path = Server.UrlDecode(Request.QueryString["path"]);
        if (!(new FileInfo(path).Exists))
            return;

        using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                SetStream(fs);
            }
    }
}

private void SetStream(Stream stream)
{
    byte[] bytes = new byte[(int)stream.Length];
    stream.Read(bytes, 0, (int)stream.Length);
    Response.Buffer = true;
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=" + Server.UrlDecode(Request.QueryString["name"]));
    Response.BinaryWrite(bytes);
    Response.Flush();
}

这和感谢你的帮助一样。这确实可以在浏览器中打开,但它处于角色级别。我需要以PDF格式打开,如果浏览器不支持,请使用关联程序打开。。。