2013-08-20 14 views
5

voglio solo chiedere come posso impedire il browser Web da Visualizza sul browser perché ogni volta l'utente fa clic sul collegamento per scaricarlo Visualizza nel browserCome forzare il browser per scaricare, non visualizzare, i documenti PDF in ASP.NET Webforms

asp.net controller 
<li><asp:HyperLink ID="hl_download" runat="server" >Download</asp:HyperLink></li> 
html 
<a id="dnn_ctr932_View_hl_download" href="/ideaPark/DesktopModules/ResourceModule/pdf_resources/IdeaPark_ER_diagram.pdf">Download</a> 
+0

questa è un'impostazione utente. non scherzare con l'utente. Se avessi usato il tuo sito e non avessi ottenuto il comportamento previsto, sarei stato seccato. – skyfoot

+0

So che ma il nostro cliente richiede –

+0

di scaricare il pdf come download invece di un documento pdf inviando un'intestazione 'Content-Type: application/octet-stream', ecco come farlo in php http: // stackoverflow.com/questions/7263923/how-to-force-file-download-with-php – SSpoke

risposta

14

Utilizzare un LinkButton in modo da poter eseguire codice lato server al clic:

<asp:LinkButton ID="hl_download" runat="server" OnClick="hl_download_Click">Download</asp:LinkButton> 

Poi, nel codebehind:

public void hl_download_Click(Object sender, EventArgs e) 
{ 
    Response.AddHeader("Content-Type", "application/octet-stream"); 
    Response.AddHeader("Content-Transfer-Encoding","Binary"); 
    Response.AddHeader("Content-disposition", "attachment; filename=\"IdeaPark_ER_diagram.pdf\""); 
    Response.WriteFile(HttpRuntime.AppDomainAppPath + @"ideaPark\DesktopModules\ResourceModule\pdf_resources\IdeaPark_ER_diagram.pdf"); 
    Response.End(); 
} 

Ciò presuppone che il percorso web sia mappato in modo pulito al percorso del file system del file. Altrimenti modificare Response.WriteFile() in modo che punti al percorso del file pdf sul filesystem.

1

Ho avuto lo stesso problema alcuni giorni fa e ho trovato un'ottima soluzione pubblicata da un altro qui su StackOverflow. Non è al 100% lo stesso scenario in cui utilizza HttpRequests per ottenere file su un altro server, ma l'invio del file al browser in un flusso ottetto garantirà l'apertura di una finestra di download.

Download/Stream file from URL - asp.net

Problemi correlati