通过不同服务器的标题下载文件

时间:2016-04-27 02:51:23

标签: c# asp.net-mvc

我将PDF文件放在不同的(FILE-Server)服务器计算机上,托管我的MVC应用程序的IIS计算机拥有该文件服务器的权限。从IIS机器我可以通过以下URI访问该文件:

file://file-server/data-folder/pdf/19450205.pdf

我想让我的MVC应用用户通过点击下载链接或按钮下载他们各自的文件。所以我可能必须为该链接/按钮编写一些Action。

我尝试以下列方式使用File返回类型:

public ActionResult FileDownload()
{
    string filePth = @"file://file-server/data-folder/pdf/19450205.pdf";
    return File(filePth , "application/pdf");
}

但上面的代码提供了不支持URI的例外。

我还尝试使用FileStream读取数组内的字节,返回字节朝向下载,但FileStream也会给出错误的错误"虚拟路径"因为文件没有放在虚拟路径中,所以它位于不同的服务器上。

2 个答案:

答案 0 :(得分:0)

public ActionResult Download()
{
    var document = = @"file://file-server/data-folder/pdf/19450205.pdf";
    var cd = new System.Net.Mime.ContentDisposition
    {
        // for example foo.bak
        FileName = document.FileName, 

        // always prompt the user for downloading, set to true if you want 
        // the browser to try to show the file inline
        Inline = false, 
    };
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(document.Data, document.ContentType);
}

答案 1 :(得分:0)

感谢您的回复,但这两项建议均无效。

由于需要通过URI访问文件,因此使用FileInfo会出错:不支持URI格式。

我设法通过以下机制完成了这项工作:

    public ActionResult FaxFileDownload()
    {
        string filePth = @"file://file-server/data-folder/pdf/19450205.pdf";

        WebClient wc = new WebClient();
        Stream s =  wc.OpenRead(filePth);

        return File(s, "application/pdf");

    }

感谢All。