Ich habe eine Erfolgsfunktion, die den Server trifft, eine Liste der Daten sendet und eine Excel-Datei für die verarbeiteten Daten erstellt. Der ganze Code funktioniert gut, aber ich kann die Datei nicht herunterladen. Datei wird auf dem Server erstellt.Datei über Erfolgsfunktion herunterladen
Client-Seite Code ist ..
MOCService.getFilterExcel($scope.filterExcel).success(function (data, responce) {
console.log(responce)
return responce;
})
Server-Seite:
public ActionResult getFilterExcel(List<FilterExcel> data)
{
System.Data.OleDb.OleDbConnection conn = null;
try
{
string filename = "";
var oldfilename = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\datafiles\\lswm\\reports.xlsx";
filename = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\datafiles\\report\\report" + HttpContext.User.Identity.Name + ".xls";
System.IO.File.Copy(oldfilename, filename, true);
conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + "; Extended Properties=\"Excel 12.0 Xml;HDR=NO\";");
conn.Open();
//return null;
int i = 3;
foreach (var item in data)
{
var strsql = "insert into [Report$C" + (i) + ":L" + (i) + "] (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10)values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')";
var cmd = conn.CreateCommand();
cmd.CommandText = string.Format(strsql, item.ccrfNo,
item.requestDate,
item.requestedBy,
item.title,
item.changeImpact,
item.plant,
item.division,
"",
item.taskStatus,
item.currentPhase
);
var rowcount = cmd.ExecuteNonQuery();
i++;
}
}
catch(Exception ex)
{
}
finally
{
if (conn != null && conn.State == ConnectionState.Open) conn.Close();
}
return File(Request.PhysicalApplicationPath + "\\datafiles\\report\\report" + HttpContext.User.Identity.Name + ".xls", "Application/MS-excel", "report" + HttpContext.User.Identity.Name + ".xls");
}
Und wenn ich die Aktion-Methode direkt von URL drücken Sie dann die Datei heruntergeladen wird, sondern über Anwendung ist es nicht herunterladen.
Sie können keine Dateien mit Ajax herunterladen. Sie müssen 'location.href = ...' im Erfolgs-Callback verwenden, um eine Methode aufzurufen, die die Datei zurückgibt –
ist die Datei, die Sie herunterladen möchten, nur Excel? oder gibt es auch Chancen für andere Dateitypen? –
Mögliches Duplikat von [Lade eine Datei von jQuery.Ajax herunter] (http://stackoverflow.com/questions/4545311/download-a-file-by-jquery-ajax) –