Se il file non si trova all'interno delle cartelle dell'applicazione e non è accessibile direttamente dal client, è possibile che venga eseguita un'azione del controller che invierà il contenuto del file al client. Ciò potrebbe essere realizzato restituendo un FileResult
dalla tua azione di controllo utilizzando il metodo File
:
public ActionResult Download()
{
string file = @"c:\someFolder\foo.xlsx";
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
return File(file, controntType, Path.GetFileName(file));
}
e quindi sostituire il pulsante con un ancoraggio che punta a questa azione di controllo:
@Html.ActionLink("Button 1", "Download", "SomeController")
In alternativa all'utilizzo di un ancoraggio è anche possibile utilizzare un modulo html:
@using (Html.BeginForm("Download", "SomeController", FormMethod.Post))
{
<button type="submit">Button 1</button>
}
Se il file si trova all'interno di alcuni non accessibili dalla cartella client di l'applicazione come ad esempio App_Data
si potrebbe utilizzare il metodo MapPath
per costruire il percorso fisico completo a questo file utilizzando un percorso relativo:
string file = HostingEnvironment.MapPath("~/App_Data/foo.xlsx");
fonte
2014-09-07 14:39:25
cosa se il file in un altro server? diciamo che il nome del server è "VUP-1"? e diciamo che il percorso è "c: \ someFolder \ foo.xlsx" -> nel server VUP-1 –