Come restituire un risultato file quando non so il tipo di contenuto
-
23-09-2019 - |
Domanda
Ho un'azione mvc asp.net che restituisce un risultato di file. Dietro le quinte, è solo la restituzione di un file da una directory. FilePathResult richiede un tipo di contenuto, ma non so che.
Qual è il modo corretto per restituire un risultato file se ho solo il percorso del file a disposizione?
Soluzione
Prendere l'estensione del file, e cercarlo nel Registro di sistema. La voce per esso avrà un "Tipo di contenuto" la proprietà.
Ecco un esempio completo di restituzione di un FilePathResult da un'azione di controllo:
string filePysicalPath, fileName; //these need to be set to your values.
var reg = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey( Path.GetExtension( filename ).ToLower() );
string contentType = "application/unknown";
if ( reg != null )
{
string registryContentType = reg.GetValue( "Content Type" ) as string;
if ( !String.IsNullOrWhiteSpace( registryContentType ) )
{
contentType = registryContentType;
}
}
return File( filePysicalPath, contentType, filename );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow