74

I am using ReSTful webservice. I am uploading multiple photos with one function (PHP).

I have used $num_files = count($_FILES['myfile']['name']) to count number of files that are to be uploaded but this always gives 1:

Image

When I print $_FILES['myfile']['name'] or $_FILES it returns last image.

Am I suppose to do any setting to send multiple files at a time?

<?php
if($result=="success")
{
    $num_files = count($_FILES['myfile']['name']);
    Zend_Debug::dump($num_files);
    die;
    for( $i=0; $i < $num_files; $i++ )
    {
        $name = $_FILES["myfile"]["name"][$i];
        $temp_path = $_FILES['myfile']['tmp_name'][$i];
        $image_name = Helper_common::getUniqueNameForFile( $name );

        echo $image_name;
        die;
        // Set the upload folder path
        $target_path = $originalDirecory."/";


        // Set upload image path
        $image_upload_path = $target_path.$image_name;
        move_uploaded_file($temp_path, $image_upload_path);

        //if(move_uploaded_file($temp_path, $image_upload_path))
        //{
        // Set 800*800 popup thumbnail...
        // Set popup directory...
        $thumbnail_directory=$popUpDirectory."/";
        // Set thumbnail name...
        $thumb_name1=$thumbnail_directory.'thumbnail_'.$image_name;
        // Set width and height of the thumbnail...
        $thumb_width=800;
        $thumb_height=800;
        $thumb1=Helper_common::generateThumbnail($image_upload_path, $thumb_name1, $thumb_width, $thumb_height);

        //if($thumb)
        //{
            // Set 435*333 thumbnail...
            // Set thumbnail directory...
            $thumbnail_directory=$wallDirecory."/";
            // Set thumbnail name...
            $thumb_name2=$thumbnail_directory.'thumbnail_'.$image_name;
            // Set width and height of the thumbnail...
            $thumb_width=435;
            $thumb_height=435;
            $thumb2=Helper_common::generateThumbnail($image_upload_path, $thumb_name2, $thumb_width, $thumb_height);

            //if($thumb)
            //{
                // Set 176*176 thumbnail...
                // Set thumbnail directory...
                $thumbnail_directory=$galleryDirectory."/";
                // Set thumbnail name...
                $thumb_name3=$thumbnail_directory.'thumbnail_'.$image_name;
                // Set width and height of the thumbnail...
                $thumb_width=176;
                $thumb_height=176;
                $thumb_smart_resize_3 = Helper_ImageResizer::smart_resize_image($image_upload_path, NULL, $thumb_width, $thumb_height, false, $thumb_name3, false);
                $thumb3=Helper_common::generateThumbnail($image_upload_path, $thumb_name3, $thumb_width, $thumb_height);
            //if($thumb)
            //{
                $profile_thumb=$thumb3;
                // Set 131*131 thumbnail...
                // Set thumbnail directory....
                $thumbnail_directory = $thumbnailsDirectory."/";
                // Set thumbnail name....
                $thumb_name4 = $thumbnail_directory.'thumbnail_'.$image_name;
                $thumb_width=131;
                $thumb_height=131;
                $thumb_smart_resize_4=Helper_ImageResizer::smart_resize_image($image_upload_path, NULL, $thumb_width, $thumb_height, false, $thumb_name4, false);
                $thumb4=Helper_common::generateThumbnail($image_upload_path, $thumb_name4, $thumb_width, $thumb_height);

                }
apurav gaur
  • 342
  • 7
  • 18
Always_a_learner
  • 4,585
  • 13
  • 63
  • 112

6 Answers6

106

I got a solution. I need to make myfile an array like this: myfile[] :)

Always_a_learner
  • 4,585
  • 13
  • 63
  • 112
  • 1
    any array of data you have to mention it with [ ] , in your case you have to send multiple files via array [ ] as in in postman you have to mention it in key parameter myfile[ ] – Manoj Rammoorthy Sep 30 '16 at 09:45
  • I guess it's not needed anymore or added automatically. At least it works without it in my case. – heyfrank Aug 15 '19 at 09:46
84

You need to add a square bracket [] sign to the parameter. Look at the following image. I add file[] to upload multiple images from the postman.

enter image description here

Shihab Uddin
  • 6,699
  • 2
  • 59
  • 74
34

You can simple add multiple lines with same key and postman converts them to array. No need to add [] as suffix to key.

Request

enter image description here

Response

enter image description here

If you have an array objects that need to passed then follow below pattern

enter image description here

Anees Hameed
  • 5,916
  • 1
  • 39
  • 43
  • 2
    This is the correct answer. The `[]` is just and artifact from PHP that is not standard in all languages – Loupax Nov 11 '20 at 10:48
13

Update 2020 Postman

You don't need to add [ ] just put the param name and select files.

Álvaro Agüero
  • 4,494
  • 1
  • 42
  • 39
6

I am using Postman v9.21.0

Steps:

  1. Create a new Post request in Postman. Like https://localhost:44394/api/BlobStorage/UploadFiles
  2. Click on Body and then select form-data
  3. Type the key name like "files" in the KEY column
  4. Here is the tricky part. Hover the mouse on entered key files. You will see Text on the right corner. Change it to File. Now you will see Select Files in the VALUE column.
  5. Click Select Files to select the files you want to upload.
  6. Click Send after selecting the files.

enter image description here

Syed Nasir Abbas
  • 1,722
  • 17
  • 11
3

Yeah,last version of postman made a bad update.

But, you can download the chrome extensions of postman and send multiple files with it, it still works there.

Edit: I just checked now, they brought it back, but you have to reenter the key value for files if you made them with the chromium version.

But now it works fine.

see the image

enter image description here

Rahman Rezaee
  • 1,943
  • 16
  • 24