如何调用

时间:2015-06-18 02:14:20

标签: angularjs asp.net-web-api

我正在编写一个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",
            }
            );
    }

1 个答案:

答案 0 :(得分:0)

您需要将didTapAtCoordinate标题设置为Accept而不是application/pdf