使用WebApi上传Angular2文件
Angular2我想上传文件并将文件保存在服务器文件夹中,但我无法获取HttpContext.Current.Request.Files,它总是空的。我的代码使用WebApi上传Angular2文件,angular,asp.net-web-api,Angular,Asp.net Web Api,Angular2我想上传文件并将文件保存在服务器文件夹中,但我无法获取HttpContext.Current.Request.Files,它总是空的。我的代码 -UploadService.ts postFileUpLoad(url: string, data: any): any { let headers = new Headers(); if (localStorage.getItem('localStorage') != null) { headers.
-UploadService.ts
postFileUpLoad(url: string, data: any): any {
let headers = new Headers();
if (localStorage.getItem('localStorage') != null) {
headers.append('Content-Type', 'multipart/form-data')
headers.append('Authorization', "Bearer " + JSON.parse(localStorage.getItem('localStorage')).idToken);
}
this.slimLoadingBarService.startLoading();
return this.http.post(url, data, {
headers: headers
})
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
-上传文件组件onChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
let file: File = fileList[0];
let formData: FormData = new FormData();
formData.append('uploadFile', file, file.name);
this.httpService.postFileUpLoad('http://localhost:3000/api/uploadFile', formData);
}}
-HTML
<input type="file" id="btnUpload" value="Upload" name="FileUpLoad" (change)="onChange($event)" class="upload" />
请帮帮我,非常感谢 更改API方法,如下所示:
[HttpPost]
[Route("uploadFile")]
public HttpResponseMessage UploadJsonFile()
{
HttpResponseMessage response = new HttpResponseMessage();
var abc = Request.Properties.Values;
var httpRequest = HttpContext.Current.Request;
var fileCount = httpRequest.Files.Count;
if (httpRequest.Files.Count > 0)
{
for (int i=0; i< fileCount ; i++)
{
var postedFile = httpRequest.Files[i];
var filePath = HttpContext.Current.Server.MapPath("~/UploadFile/" + postedFile.FileName);
postedFile.SaveAs(filePath);
}
}
return response;
}
[HttpPost]
[路由(“上传文件”)]
公共HttpResponseMessageUploadJsonfile()
{
HttpResponseMessage response=新的HttpResponseMessage();
var abc=Request.Properties.Values;
var httpRequest=HttpContext.Current.Request;
var fileCount=httpRequest.Files.Count;
如果(httpRequest.Files.Count>0)
{
for(int i=0;i
您将在“postedFile”中获得该文件。您必须删除此行
headers.append('Content-Type', 'multipart/form-data')
然后它就会起作用。@爱情王子你试过我的答案了吗?它工作了吗?不,它现在工作了:(
headers.append('Content-Type', 'multipart/form-data')