带Web API文件上传的Angular 2
我正在尝试使用Angular 2和web API上传文件,但我无法在服务器上获取文件 我的控制器方法是带Web API文件上传的Angular 2,angular,file-upload,asp.net-web-api2,Angular,File Upload,Asp.net Web Api2,我正在尝试使用Angular 2和web API上传文件,但我无法在服务器上获取文件 我的控制器方法是 [HttpPost] [Route("add")] public IHttpActionResult Add(CourseDto course) { try { return Ok(""); //course.CompanyId = User.Identity.GetUserId<i
[HttpPost]
[Route("add")]
public IHttpActionResult Add(CourseDto course)
{
try
{
return Ok("");
//course.CompanyId = User.Identity.GetUserId<int>();
//var result = _courseService.Add(course);
//return Ok(result.Message);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
onSubmit() {
this.httpService.post("course/add", this.courseModel)
.subscribe(result => {
this.loggerService.notify(this, "Courses added successfully", Toast[Toast.success]);
this.httpService.onUpdateModel();
this.refreshModel();
}, error => {
console.log(error);
});
}
onChange(event) {
this.courseModel.courseFile =event.target.files[0];
}
我的Html文件是
<form class="form-horizontal" #courseForm="ngForm" (ngSubmit)="onSubmit()" enctype="multipart/form-data">
<div class="form-group">
<label class="control-label col-sm-4">Browse Course:</label>
<div class="col-sm-8">
<input type="file" name="file" (change)="onChange($event)"/>
</div>
</div>
<footer>
<div class="row">
<div class="col-md-12 col-lg-12 col-xs-12">
<div class="pull-right">
<button type="submit" class="btn btn-primary" [disabled]="!courseForm.form.valid">Add</button>
<button type="button" class="btn btn-default" (click)="close()">Close</button>
</div>
</div>
</div>
</footer>
</form>
我的角度2分量法是
[HttpPost]
[Route("add")]
public IHttpActionResult Add(CourseDto course)
{
try
{
return Ok("");
//course.CompanyId = User.Identity.GetUserId<int>();
//var result = _courseService.Add(course);
//return Ok(result.Message);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
onSubmit() {
this.httpService.post("course/add", this.courseModel)
.subscribe(result => {
this.loggerService.notify(this, "Courses added successfully", Toast[Toast.success]);
this.httpService.onUpdateModel();
this.refreshModel();
}, error => {
console.log(error);
});
}
onChange(event) {
this.courseModel.courseFile =event.target.files[0];
}
Angular 2 Http Post方法是
post(url: string, data: any) {
url = `${appConfig.apiUrl}${url}`;
this.progressBarService.RequestStarted();
return this.http.post(url, data)
.finally(() => this.progressBarService.RequestFinished())
.map((result: Response) => result.json())
.catch(this.handleError);
}
我在我的Web API控制器中成功地接收了模型,但没有文件。如何将文件发送到web api控制器模型?试试这个
HttpResponseMessage response = new HttpResponseMessage();
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count > 0)
{
foreach (string file in httpRequest.Files)
{
var postedFile = httpRequest.Files[file];
var filePath = HttpContext.Current.Server.MapPath("~/UploadFile/" + postedFile.FileName);
postedFile.SaveAs(filePath);
}
}
多亏了
希望这有帮助试试这个
HttpResponseMessage response = new HttpResponseMessage();
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count > 0)
{
foreach (string file in httpRequest.Files)
{
var postedFile = httpRequest.Files[file];
var filePath = HttpContext.Current.Server.MapPath("~/UploadFile/" + postedFile.FileName);
postedFile.SaveAs(filePath);
}
}
多亏了
希望这对您有所帮助步骤1:Ng2/4 Html-
<input type="file" name="ProfilePhoto" id="ProfilePhoto" />
关于要添加到下面的服务---
注意:这里我使用的是基于令牌的异步,您可以使用普通的http post
uploadSystemUserProfilePhoto(token:string,formData: FormData): Observable<GlobalBaseResponse> {
let options=this.getFileUploadHeader(token);
return this.http.post(`${this.globalConstant.baseApiUrl}/account/uploadSystemUserProfilePhoto`, formData, options)
.map((response: Response) => {
this.globalBaseResponse = response.json();
return this.globalBaseResponse;
});
}
private getFileUploadHeader(token:string):RequestOptions{
let headers = new Headers({
'Data-Type': 'json',
// 'Content-Type': false,
// 'Process-Data':false,
'Authorization':'Bearer '+token
});
let options = new RequestOptions({ headers: headers });
return options;
}
我想这对你有帮助。
谢谢步骤1:Ng2/4 Html-
<input type="file" name="ProfilePhoto" id="ProfilePhoto" />
关于要添加到下面的服务---
注意:这里我使用的是基于令牌的异步,您可以使用普通的http post
uploadSystemUserProfilePhoto(token:string,formData: FormData): Observable<GlobalBaseResponse> {
let options=this.getFileUploadHeader(token);
return this.http.post(`${this.globalConstant.baseApiUrl}/account/uploadSystemUserProfilePhoto`, formData, options)
.map((response: Response) => {
this.globalBaseResponse = response.json();
return this.globalBaseResponse;
});
}
private getFileUploadHeader(token:string):RequestOptions{
let headers = new Headers({
'Data-Type': 'json',
// 'Content-Type': false,
// 'Process-Data':false,
'Authorization':'Bearer '+token
});
let options = new RequestOptions({ headers: headers });
return options;
}
我想这对你有帮助。
感谢上帝保佑你的灵魂,你把我从我陷入的这个怪物中拯救出来。随时都德:)上帝保佑你的灵魂,你把我从我陷入的这个怪物中拯救出来。随时都德:)