【发布时间】:2016-11-27 13:08:08
【问题描述】:
我将 ASP.NET MVC 5 用于 Web 应用程序的后端,将 Angular + Typescript 用于 Web 应用程序的前端。
我正在尝试将文件上传到服务器,但由于某种原因控制器没有将文件作为参数获取(控制器中的参数为空)。
我正在分享下面的代码。
提前致谢!
HTML:
<input id="filePath" name="filePath" type="file" accept="image/*" />
<a id="uploadImage" ng-click="ctrl.uploadFile()">Upload</a>
打字稿:
// controller class:
uploadFile(): void {
var filePathInput: any = $("#filePath");
if (filePathInput[0].files) {
var file: any = filePathInput[0].files[0];
var resource: any = this.service.uploadFile();
resource.save(file, (result: any) => {
if (!result || !result.success) {
alert("error");
} else {
alert("ok");
}
});
}
}
// service class:
uploadFile(): ng.resource.IResourceClass<IMyResource> {
return this.$resource("/MyController/UploadImage", null, { method: "POST" });
}
后端控制器:
[HttpPost]
public JsonResult UploadImage([FromBody]HttpPostedFileBase file)
{
if (file == null || file.ContentLength == 0)
{
return NullParameterResponse();
}
else
{
file.SaveAs("/img/" + Path.GetFileName(file.FileName));
return SuccessResponse();
}
}
【问题讨论】:
-
我注意到的第一件事是不同的 URL 段:
UploadImage->UploadChequeImage -
对不起,这是我发布问题时的错误。这是因为我试图通过重命名方法来简化问题中的问题,但我没有看到那个。我刚刚编辑了这个问题来解决这个问题。控制器方法其实是前端调用的,但是参数(文件)始终为null。
标签: angularjs asp.net-mvc html asp.net-web-api typescript