您可以尝试从存储中读取文件作为字节数组,并使用该File
方法从 action 方法中返回它。
public ActionResult View(int id)
{
// id is a unique id for the file. Use that to get the file from your storage.
byte[] byteArrayOfFile=GetFileInByteArrayFormatFromId(id);
return File(byteArrayOfFile,"application/pdf");
}
假设GetFileInByteArrayFormatFromId
从您的存储/天蓝色读取后返回文件的字节数组版本。你可以考虑在你的环境中缓存一些文件,这样你就不需要在每次请求时都使用 azure 来获取它。
如果您可以将文件作为文件流读取,则该File
方法也有一个重载
public ActionResult View(int id)
{
// id is a unique id for the file. Use that to get the file from your storage.
FileStream fileStream = GetFileStreamFromId(id);;
return File(fileStream, "application/pdf","Myfile.pdf");
}
如果您的服务器中有可用的文件(缓存文件),您可以使用 File 方法的另一个重载,您将在其中传递路径而不是字节数组。
public ActionResult View(int id)
{
var f = Server.MapPath("~/Content/Downloads/sampleFile.pdf");
return File(f,"application/pdf");
}
如果浏览器支持显示响应的内容类型,则响应将显示在浏览器中。大多数主流浏览器都支持渲染 pdf 文件。
File 方法还有另一个重载,它采用浏览器的保存/下载对话框将使用的下载文件名,以便用户可以将其保存在本地计算机和/或打开。
public ActionResult View(int id)
{
var pathToTheFile=Server.MapPath("~/Content/Downloads/sampleFile.pdf");
return File(pathToTheFile, MimeMapping.GetMimeMapping(pathToTheFile),"Myfile.pdf");
}
public ActionResult ViewFromByteArray(int id)
{
byte[] byteArrayOfFile=GetFileInByteArrayFormatFromId(id);
return File(byteArrayOfFile, "application/pdf","Myfile.pdf");
}
这样,用户将从浏览器中获得下载提示。