Humphrey
Humphrey

Reputation: 2817

php upload file into the folder

I am trying to upload multiple images into the folder using php . The code can print out the file names which means I get the files but now it does not upload them and I get no error : below is my code

<?php 
    $target = "image_uploads/";
    if(isset($_FILES['FILE_NAME'])){
        foreach($_FILES['FILE_NAME']['tmp_name']as $key => $error ){
           print_r($key);
           $file_upload = $key.$_FILES['FILE_NAME']['name'][$key];
           #print image names
           echo $file_upload.'</br>';
          move_uploaded_file($file_upload,$target);    
        }
    }
?>

Upvotes: 0

Views: 403

Answers (4)

Palak Taneja
Palak Taneja

Reputation: 2061

There can be multiple reasons for this :

  1. The target folder must exist before trying to move the file from temp location to the target and must also be writable

  2. the move_uploaded_file takes the second argument as the file name followed by the directory name, so it can be something like : target folder/user.file.name.ext

  3. If you are uploading multiple files, then the $_FILES must be accessed as shown in the link : http://php.net/manual/en/features.file-upload.multiple.php

  4. for the php error messages that you may encounter, here is a list : http://php.net/manual/en/features.file-upload.errors.php

Upvotes: 0

Vinoth Babu
Vinoth Babu

Reputation: 6852

In target you have to give the file name too. Please use the code below,

$target = "image_uploads/";
if(isset($_FILES['FILE_NAME'])){
    foreach($_FILES['FILE_NAME']['tmp_name'] as $key => $error ){
        print_r($key);
        $file_upload = $key.$_FILES['FILE_NAME']['name'][$key];
        print image names
        echo $file_upload.'</br>';
        move_uploaded_file($file_upload,$target.$_FILES['FILE_NAME']['name']);    
    }
}

Upvotes: 2

ChrisF
ChrisF

Reputation: 857

I think the problem is in the foreach loop.

foreach ($_FILES['FILE_NAME']['tmp_name'] as $key => $val) {
    // this loops through the tmp_name of $_FILES['FILE_NAME']
    // which is a string
}

I think you meant something like:

foreach ($_FILES as $index => $fileArray) {
    $tmpName = $fileArray['tmp_name'];
    echo "File at key $index is temporarily uploaded at $tmpName";
}

The code above will loop through all uploaded files and print it's current filename.

Upvotes: 1

beerwin
beerwin

Reputation: 10327

It might happen that your target folder is not writable.

I also think, that the cause of which you're not getting errors is, that you have the following:

print_r($key);

Yous should have:

print_r($error);

Upvotes: 0

Related Questions