Si può provare a fare un gestore per questo work.It è più sicuro se è possibile modificare bene. Per questo lavoro, è necessario crittografare il percorso del file nella pagina in cui si inserisce un collegamento per il file.
<a href=\"Downloads.ashx?f={0}\" target=\"_blank\">Your link to file</a>
//{0} -> Encrypted file path
//target = _blank force browser to download file in another window
Ci sono un sacco di tecniche di crittografia a here
Nella tua Handler pagina, è necessario per decifrare il percorso del file in un unico originale modo da poter leggere con System.IO
librerie.
context.Response.ContentType = ""; //-->MimeType for your file's extension
è possibile specificare il MimeType dal Registro di sistema a meno che il mime-type è statico come immagini.
string mimeType = Registry.GetValue(string.Format(@"HKEY_CLASSES_ROOT\.{0}",
Path.GetExtension(decryptedfilePath)), "Content Type", null).ToString();
//Then everything is ready for download
byte[] buffer = File.ReadAllBytes(decryptedfilePath);
context.Response.OutputStream.Write(buffer, 0 , buffer.Length);
context.Response.Flush();
Buona fortuna.
Sono curioso di sapere perché non si costruisca solo un URL che punta al file che si desidera offrire al client e lo si dia al browser da utilizzare per scaricare il file. ? – 7wp
È un file txt, che normalmente verrebbe mostrato direttamente nel browser. Se il tipo di contenuto è impostato su "application/octet-stream", suppongo che il browser avvii invece un download su disco. – awe
Il file "txt" è solo un esempio. E non viene visualizzato direttamente nel browser. Con questa risposta è sempre scaricabile. –