【问题标题】:Upload Multiple Image From Angular To Laravel将多个图像从 Angular 上传到 Laravel
【发布时间】:2021-08-01 23:29:37
【问题描述】:

我无法使用 Laravel api 从 **angular ** 上传多张图片,当我尝试从 Postman 上传这些图片时它可以工作,但是当我从前端上传时它失败了。

我需要帮助,有什么想法!!

这是我的 api 函数:

public function storeImages(Request $request) 
{           
    if($request->hasFile('images')) {
        $data = [];
                    
        foreach($request->file('images') as $image)
        {
            $Imagename = $image->getClientOriginalName();
            $image->move(public_path('/images'), $Imagename);   
            $data[] = $Imagename;                            
        }
         
        $file = new ImageAnnonce($request->input()) ;
        $file->annonceId = $request->annonceId;
        $file->image_name = json_encode($data);
        $file->save();

        return response()->json($data); 
    }
    else {
        return response()->json(['message' => 'failed']);  
    }
} 

这是html

<form (ngSubmit)="saveMultipleImage()">
  <input
    class="form-control"
    type="file"
    id="images"
    name="images[]"
    (change)="onSelectFile($event)"
    multiple
  />
  <button type="submit" class="btn btn-primary float-right" id="publier-btn">
    submite
  </button>
</form>
                    

文件.ts

saveMultipleImage(){   
    const headers = new HttpHeaders();
    headers.append('Content-Type', 'multipart/form-data');
    headers.append('Accept', 'application/json');

   var formdata = new FormData();
   //formdata.append('annonceId', '2' );
   for (let i = 0; i < this.length; i++) 
   {
       formdata.append('images', this.docs[i].name );
       //console.log('name -->', this.docs[i].name );
   }

   this.http.post('http://127.0.0.1:8000/api/storeImages', formdata,{headers: headers}).subscribe(res =>  {
       console.log(res);
   });
}
      docs:any;
      length:any;

      onSelectFile(event)
      { 
        this.docs = <File>event.target.files;
        this.length = <File>event.target.files.length;
      }

它总是返回

{message: "failed"}

【问题讨论】:

    标签: angular laravel api angular11


    【解决方案1】:

    您可以尝试删除 headers.append('Content-Type', 'multipart/form-data');从你的标题?另外,您的控制台日志是否为您提供了正确的日志?

    最后,docs 变量的数据类型是什么?尝试将其设为 File 类型

    docs: File[] = [];
    

    【讨论】:

    • 你能分享一下邮递员提出这个请求的截图吗?我想看看邮递员发出的请求正文。 - 像这样 - snipboard.io/9JLmKj.jpg
    • 当然,link,抱歉耽搁了
    • 这是我删除条件时的错误 if(if($request->hasFile('images'))) ----------> error: message: "foreach () 参数必须是数组|对象类型,给定 null"
    • 在 Angular 中,您附加的是图像的名称,而不是图像。检查这个答案上的 Angular 代码 - stackoverflow.com/questions/61815627/… 并让我知道它是否有效。
    • 我试过那个解决方案但没有结果,我认为问题来自后端。无论如何,我非常感谢先生:)
    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多