Вы можете попытаться прочитать файл из вашего хранилища как массив байтов и использовать метод File
, чтобы вернуть его из метода действия.
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");
}
При этом пользователь получит запрос на загрузку из браузера.
person
Shyju
schedule
24.12.2015