我将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也会给出错误的错误"虚拟路径"因为文件没有放在虚拟路径中,所以它位于不同的服务器上。
答案 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。