dqwh1218 2018-01-01 16:08
浏览 58
已采纳

角度文件上传到Laravel

I am trying to upload a file to a Laravel 5.5 API backend using Angular 5.

The following upload code works (I have included JQuery library for use with bootstrap):

$.ajax({
    url: url,
    data: formModel,
    type: 'POST',
    contentType: false, // NEEDED, DON'T OMIT THIS
    processData: false, // NEEDED, DON'T OMIT THIS
    // ... Other options like success and etc
});

However it does not feel like the "Angular" way to do this. Using imports -- import { HttpClientModule, HttpClient, HttpHeaders } from '@angular/common/http'; and the following code, the server gets blank entries for the post data. The post data is present in the request body like a regular form but it is not accessible from $_POST or laravel's $request parameter.

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/form-data' })
};
// In a real-world app you'd have a http request / service call here like
// this.http.post('apiUrl', formModel)
const url = this.configService.getAPIUrl() + 'videos'; //http://192.168.1.106/backend/hero';

let ret =  this.http.post(url, formModel, httpOptions).pipe(
  //tap((hero: T) => this.log(`posted {data}`)),
  catchError(this.heroService.handleError('addHero'))
).subscribe();

I am just looking to find out what is wrong with my angular code and how I can fix that. Thanks for any suggestions and responses.

  • 写回答

1条回答 默认 最新

  • douye5949 2018-01-01 16:34
    关注

    You just need to set proper headers and formdata to your http service like this Please do not pass any content-type via headers. I don't know what are you doing with pipe and all those but passing parameters like this should work

    const url = this.configService.getAPIUrl() + 'videos'; 
    
    let formModel = new FormData();
    //Then add your data using formModel.append() method
    //like formModel.append("username","ABC");
    
    let ret =  this.http.post(url, formModel).pipe(
      //tap((hero: T) => this.log(`posted {data}`)),
      catchError(this.heroService.handleError('addHero'))
    ).subscribe();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值