Angular2 - 未在服务器

时间:2017-07-14 11:22:51

标签: c# angular post

我正在Angular 2上创建一个项目,我开始实现一个下载方法,但在测试时我注意到我的服务器没有获取文件的路径。我可能犯了一个我没有看到的错误。 这是我的代码:

.component.ts

downloadFile(filePath: string): void{
    this.dataImportService.downloadFile(filePath)
        .then(data => {
            console.log(data);
        });
}

dataImportService.ts

downloadFile(filePath: string): any{
return this.http.post(SERVICE_URL + 'DataImport/downloadFile', filePath)
  .toPromise()
  .then(response => {
    return response.json().ReturnStatus.ReturnObject;
  })
  .catch(this.handleError);
}

分析Chrome控制台上的帖子,正在发送filePath,但当它到达我的服务器(c#API)时,它会变为空。

DataImportController.cs

[HttpPost]
    public void downloadFile(string path)
    {

        try
        {
            string extension = Path.GetExtension(path).Substring(1);
            string fileName = Path.GetFileName(path);

            HttpResponse response = System.Web.HttpContext.Current.Response;
            response.Clear();
            response.ClearHeaders();
            response.AddHeader("Content-Type", Utils.MimeTypesConverter.GetMimeType(extension));
            response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
            response.TransmitFile(Server.MapPath(path));

            response.End();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            return;
        }


    }

有什么建议吗? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您发送的帖子数据只是一个字符串。发布数据应该是键值对,然后只有您可以在后端实现中指定要引用的发布数据项。通常,post数据项是JSON类型,在你的情况下看起来像

{'file_path': "path/to/the/file"}