我正在编写一个Web API方法,用于从查询数据库中的数据导出PDF文件。
我可以直接调用并按预期获得结果。但是从angularjs调用这个方法是行不通的。我看到该方法被调用但下载没有发生。我在一些帖子中看到ajax调用不能下载内容....如果是这样,调用此方法并获取文件的其他选项是什么?有人可以给出一些如何使其有效的提示吗?
这是我在WEB API和angularjs上编写的代码。
[HttpGet]
[Route("ExportAppsData")]
public HttpResponseMessage ExportAppsData(string ids, bool skip)
{
Int64[] convertedIds = new Int64[] { };
if (ids != null)
convertedIds = ids.Split(',').Select(n => Convert.ToInt64(n)).ToArray();
List<App> apps = new List<App>();
if (skip)
apps = _appRepository.GetAllApps().SkipWhile(a => convertedIds.Contains(a.Id)).ToList();
else
apps = _appRepository.GetAllApps().Where(a => convertedIds.Contains(a.Id)).ToList();
List<AppDto> mappedResult = _mapppingEngine.Map<List<App>, List<AppDto>>(apps);
return Request.CreateResponse(HttpStatusCode.OK, mappedResult,new PdfMediaTypeFormatter());
}
function exportAppsData(appIds, skipFlag) {
return $http(
{
url: ngSettings.apiServiceUri + 'api/Apps/ExportAppsData',
responseType : ArrayBuffer,
params: { ids: appIds.join(","), skip: skipFlag },
contentType: 'application/json; charset=utf-8',
headers: {
Accept: "text/csv; charset=utf-8",
},
method: "GET",
}
);
}
答案 0 :(得分:0)
您需要将didTapAtCoordinate
标题设置为Accept
而不是application/pdf
。