C# 是否可以使用ajax.beginform下载文件?还是ajax?
以下是我的控制器的代码:C# 是否可以使用ajax.beginform下载文件?还是ajax?,c#,asp.net-mvc,C#,Asp.net Mvc,以下是我的控制器的代码: [HttpPost] public async Task<ActionResult> DownloadItemList(int subcampaignId, string SheetName, string filename) { DataSet ds = new DataSet(); string url = string.Format("api/report/subcampaign/{0}", subc
[HttpPost]
public async Task<ActionResult> DownloadItemList(int subcampaignId, string SheetName, string filename)
{
DataSet ds = new DataSet();
string url = string.Format("api/report/subcampaign/{0}", subcampaignId);
var response = await req.GetXMLAsync(url);
XmlDocument xmlDoc = new XmlDocument();
try
{
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(content);
XmlNodeReader xmlReader = new XmlNodeReader(xmlDoc);
ds.ReadXml(xmlReader);
}
IDataTableToWorkbookUtility workbookExportUtility = new DataTableToWorkbookUtility();
byte[] excelContent = workbookExportUtility
.ExportDataTableToWorkbook(ds.Tables[0], SheetName)
.GetBytes();
return this.File(excelContent, "application/vnd.ms-excel", filename + ".xls");
}
catch (Exception e)
{
log.Debug("CampaignListController/GetAudio: " + e.Message);
throw;
}
}
[HttpPost]
公共异步任务DownloadItemList(int subcompagignid、字符串SheetName、字符串文件名)
{
数据集ds=新数据集();
stringurl=string.Format(“api/report/subcompaign/{0}”,subcompaignid);
var response=wait req.getxmlsync(url);
XmlDocument xmlDoc=新的XmlDocument();
尝试
{
if(响应。IsSuccessStatusCode)
{
var content=await response.content.ReadAsStringAsync();
xmlDoc.PreserveWhitespace=true;
LoadXml(内容);
XmlNodeReader xmlReader=新的XmlNodeReader(xmlDoc);
ReadXml(xmlReader);
}
IDataTableToWorkbookUtility workbookExportUtility=新数据表ToWorkBookUtility();
字节[]excelContent=workbookExportUtility
.ExportDataTableToWorkbook(ds.Tables[0],图纸名称)
.GetBytes();
返回此.File(excelContent,“application/vnd.ms excel”,filename+“.xls”);
}
捕获(例外e)
{
log.Debug(“活动列表控制器/GetAudio:+e.Message”);
投
}
}
当我使用ajax.beginform。。响应不是下载文件,而是读取为文本。我想使用ajax,因为我想在用户单击submit按钮时显示加载栏。。我只想在等待下载文件时显示加载状态实际上,您无法通过AJAX上传或下载文件 你可以试试下面的场景 如果文件已成功找到/创建。将JSON结果与文件链接一起发回。然后在javascript中使用windows.location检索文件。当出现错误时,JSON结果将包含错误信息,并且该信息可以显示给用户。要使其工作,您需要创建另一个端点(操作),该端点可以对文件进行流式处理
$.ajax({
..
success: function(data)
{
if( data.result=='success' ){
window.open(download_path + data.fileName);
}
}
..
})
实际上可以,您需要使用blueimp的文件上传jquery。它有大量的选项并支持跨域 它还有一个可以实现的加载条 嗨,我在哪里能找到“道洛路”?你能更详细地告诉我吗?塔克斯!