4

I am trying to upload multiple images using guzzlehttp client. I have a form in which other type of data('id', 'date','name' e.t.c..) and images are there.

I want to save other data along with image upload through an Api Request.

I am able to save other data, but i am getting problem in uploading images.

In the API i am accessing my image file by

$request->file('images') 

but it is showing empty.

My code for calling the API

$images = $request->file('images'); foreach ($images as $image) { $body[] = [ 'Content-type' => 'multipart/form-data', 'name' => $image->getClientOriginalName(), 'contents' => fopen($image->getRealPath(), 'r') ]; } $data = $request->all(); $client = new Client(); $response = $client->request('POST', $url, [ 'multipart' => $body, 'json' => $data ]); 

I'm handling the Api for uploading image below

if ($request->hasFile('images')) { $images = $request->file('images'); foreach ($images as $image) { $imageRules = [ 'file' => 'mimes:png,jpeg,jpg,JPG|max:1024' ]; $imageMessages = [ 'file.mimes' => 'One of the images/video is not valid. (only .png, .jpeg, .jpg, .mp4, .x-flv, .x-mpegURL, .MP2T, .3gpp, .quicktime, .x-msvideo, .x-ms-wmv are accepted)', 'file.max' => 'Image size cannot br more than 1 MB' ]; $imageValidator = Validator::make(['file' => $image], $imageRules, $imageMessages); if ($imageValidator->fails()) { return response()->json(['success' => false, 'error' => $imageValidator->messages()->first(), 'dashRedirectUrl' => $redirectRoute]); } } $directPath = '/ticket/' . $ticket->id . '/mapping/' . $mappingId . '/images/'; foreach ($images as $image) { $option = ['isWatermark' => false]; $imageName = $this->uploadImageToServer($image, $directPath, $option); $imgInsertData = [ 'url' => $imageName, 'title' => $this->getImageTitle($image), 'ticket_mapping_id' => $mappingId, 'type_id' => 1, ]; TicketMappingGallery::create($imgInsertData); } } 

Note :: My funciton uploadImageToServer() is custom function for uploading the images..

Any help would be appreciated. Drop comment if anything is not clear.

2
  • Update your question with blade form code Commented Dec 29, 2016 at 6:36
  • hi there, can you give me the code for uploadImageToServer() & getImageTittle() function please ? Commented Oct 5, 2019 at 5:44

1 Answer 1

1

Try this one,

foreach ($image as $img) { $body[] = [ 'name' => 'image[]', 'image_path' => $img->getPathname(), 'image_mime' => $img->getmimeType(), 'image_org' => $img->getClientOriginalName(), 'contents' => fopen($img->getRealPath(), 'r') ]; } $requestOptions = ['query' => $data, 'multipart' => $body ]; 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.