我正在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;
}
}
有什么建议吗? 提前感谢您的帮助。
答案 0 :(得分:1)
您发送的帖子数据只是一个字符串。发布数据应该是键值对,然后只有您可以在后端实现中指定要引用的发布数据项。通常,post数据项是JSON类型,在你的情况下看起来像
{'file_path': "path/to/the/file"}