Desidero che il client scarichi un file memorizzato nel mio db quando si fa clic su un pulsante. Invio questa richiesta Ajax e la prendo dal lato server.Richiesta di download di file Ajax di Extjs C# MVC
ExtJS:
downloadFile: function (a, b, c) {
var feed_id =this.getMyfeedwindow().down('form').getComponent('FeedId').text;
Ext.Ajax.request({
url: '/Feed/Download',
method: 'GET',
params: {
fileID: feed_id, //this.form.getComponent('file').value,
},
failure: function (response) {
alert('failed !');
},
success: function (response) {
alert('success!');
},
});
},
quindi soddisfare la richiesta con questo blocco di codice.
C#:
public void Download(string fileID){
Response.ContentType = "application/force-download";
Response.AddHeader("Content-Disposition", "attachment; Filename=\"Logo1.jpg\"");
Response.BinaryWrite(data);
Response.End();
}
Quando ho controllato di rete con Firebug, sembra che la mia richiesta ritorna con successo con questi parametri.
Cache-Control private
Content-Disposition attachment; filename="Logo1.jpg"
Content-Type application/force-download
Date Wed, 09 Jan 2013 12:51:54 GMT
Server Microsoft-IIS/8.0
Transfer-Encoding chunked
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 4.0
X-Powered-By ASP.NET
X-SourceFiles =?UTF-8?B?RTpcVXRrdUNhblxQcm9qZWN0c1xURlNcQlRPTVxCVE9NXEZlZWRcRG93bmxvYWQ=?=
Anche se restituito correttamente, il download non viene avviato. Ho letto un sacco di domande e articoli, ma la maggior parte delle risposte dice che l'aggiunta dell'intestazione di download forzato risolve il problema. Quale punto mi manca? Grazie.
Cosa stai chiedendo qui? Non è chiaro. – Liam
Il download non inizia dal lato server? Non sono riuscito a farlo partire. Il campo di risposta in Firebug sembra riempito con alcuni dati ma non c'è download. – tkcn