Si può provare a leggere il file dalla memoria come matrice di byte e utilizzare il metodo File
per restituirlo dal metodo di azione.
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");
}
Supponendo GetFileInByteArrayFormatFromId
restituisce la versione array di byte del file dopo aver letto dal vostro storage/azzurro. È possibile prendere in considerazione la memorizzazione nella cache di alcuni file nel proprio ambiente in modo che non sia necessario raggiungere l'azzurro per ottenerlo su ogni richiesta.
Se è possibile leggere il file come un flusso di file, il metodo File
ha un sovraccarico che prende anche quello
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");
}
E se avete il file disponibili nel server (i file memorizzati nella cache), Voi è possibile utilizzare un altro overload del metodo File in cui si passerà il percorso anziché l'array di byte.
public ActionResult View(int id)
{
var f = Server.MapPath("~/Content/Downloads/sampleFile.pdf");
return File(f,"application/pdf");
}
Se il browser ha il supporto per visualizzare il tipo di contenuto della risposta, la risposta verrà visualizzata nel browser. La maggior parte dei principali browser supporta il rendering di file PDF.
C'è un altro sovraccarico del metodo File che prende il nome del file di download che verrà utilizzato dalla finestra di dialogo di salvataggio/download del browser in modo che l'utente possa salvarlo sul computer locale e/o aprire.
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");
}
Con questo, l'utente riceverà un prompt di download dal browser.
Azure consente il download diretto come array di byte utilizzando 'file.DownloadToByteArray()' – devSparkle