带Web API文件上传的Angular 2

带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

我正在尝试使用Angular 2和web API上传文件,但我无法在服务器上获取文件

我的控制器方法是

 [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;
    }
我想这对你有帮助。
感谢

上帝保佑你的灵魂,你把我从我陷入的这个怪物中拯救出来。随时都德:)上帝保佑你的灵魂,你把我从我陷入的这个怪物中拯救出来。随时都德:)