简体   繁体   English

将多张图片从 Angular 上传到 Laravel

[英]Upload Multiple Image From Angular To Laravel

I cannot upload multiple images from **angular ** using a Laravel api, when I try to upload these images from Postman it works, but when I do it from my frontend it failed.我无法使用 Laravel api 从 **angular ** 上传多个图像,当我尝试从 Postman 上传这些图像时它可以工作,但是当我从前端执行它时它失败了。

I need a help please, any idea !!我需要帮助,任何想法!

this is my api function:这是我的 api function:

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']);  
    }
} 

This is the html这是 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>
                    

file.ts文件.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;
      }

It returns always它总是返回

{message: "failed"}

Can you try by removing headers.append('Content-Type', 'multipart/form-data');您可以尝试删除 headers.append('Content-Type', 'multipart/form-data'); from your header?来自您的 header? Also, is your console log giving you the correct logs?此外,您的控制台日志是否为您提供了正确的日志?

Lastly, what's the datatype of docs variable?最后,docs 变量的数据类型是什么? Try making it of type File尝试将其设为 File 类型

docs: File[] = [];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM