Laravel: The file was not uploaded due to an unknown error
Asked Answered
E

5

5

I am trying to upload a file to two different locations. The lcoations being /2x/ adn /3x/. It uploads the file on 3x but doesn't on 2x and throws this error:

The file was not uploaded due to an unknown error

Here is what i am doing:

$photo = $request->file('photo');

    if (isset($photo)) {
        if ($photo != null || $photo != '') {

            $imageSize = getimagesize($photo);
            $resolution = $imageSize[0] . 'x' . $imageSize[1];

            if ($resolution == '300x300' || $resolution == '450x450') {

                if (!file_exists(base_path('uploads/custom_avatar'))) {
                    mkdir(base_path('uploads/custom_avatar'), 0777, true);
                }

                $resolution = "3x";

                $uploadPath = base_path('uploads/custom_avatar/' . $resolution . '/');

                $otherImageResolution = '2x';
                $otherImagePath = base_path('uploads/custom_avatar/' . $otherImageResolution . '/');
                //echo $otherImagePath;exit;
                // saving image
                $fileName = $child->id . '_' . time() . '.png';

                $photo->move($uploadPath, $fileName);
                $photo->move($otherImagePath, $fileName);

                // creating records
                $childImage = Images::addPhoto($child->id, $fileName, $resolution);
                $otherImage = Images::addPhoto($child->id, $fileName, $otherImageResolution);

                if ($childImage && $otherImage) {
                    $result = Child::createChildResponseData($child);
                    \Log::info('Child avatar added Successfully' . json_encode($childImage));
                    return response()->json([
                        'status' => $this->SUCCESS,
                        'response' => $result,
                    ], $this->SUCCESS);
                } 

Any help?

Enchant answered 7/7, 2017 at 7:24 Comment(2)
Move or copy a file from the request to multiple locations [stackoverflow question ](#38979886)Paries
Thankyou @SurenderSinghRawat, It worked.Enchant
P
5

You can try this:

$request->file('photo')->move($destination_path, $file_name);

Add DIRECTORY_SEPARATOR between path and filename if needed and copy that file at new location

copy($destination_path.$file_name, $new_path.$new_file_name);
Paries answered 20/7, 2017 at 7:31 Comment(0)
H
25

Check your code if your file upload code is running two times.

I was facing the same issue & then I find that my file upload code is running two times.

after commenting one of them it's working fine.

Hafner answered 5/8, 2019 at 7:36 Comment(6)
you are right, my file upload was running two times.Dory
also i am faced to this issue and it's uploading two times in foreach. thank you for idea and it's workedScrutable
It worked for me as i looked into my foreach, i was uploading same file twice, resulting in error. your hint solved my problem. thanks.Shuler
thanks a lot, i was uploading it twice, using same name for different files, thanks again :)Edward
Thanks. I checked and when i was uploading 2 files i for error moved 2 times the same one :)Votyak
oopss... you are right.Egomania
P
5

You can try this:

$request->file('photo')->move($destination_path, $file_name);

Add DIRECTORY_SEPARATOR between path and filename if needed and copy that file at new location

copy($destination_path.$file_name, $new_path.$new_file_name);
Paries answered 20/7, 2017 at 7:31 Comment(0)
K
1

Check your code if your file upload code is running two times. You can check this part of the code. Make sure you type it correctly and not repeat it twice.

   // Original size upload file
    $section_image_file->move($folder, $section_image_name);
Kist answered 14/3, 2022 at 12:30 Comment(0)
K
0

Check if you call any method (like $file->getSize()), because it calls the move method too.

Klement answered 21/10, 2023 at 9:2 Comment(0)
S
0

I had a similar case where I was using this code:

if ($_FILES && isset($_FILES['files'])) { 
            return new UploadedFile(
            $_FILES['files']['tmp_name'][0],
            $_FILES['files']['name'][0],
            $_FILES['files']['type'][0],
            $_FILES['files']['size'][0],
            $_FILES['files']['error'][0],
            true
        );
    }

changing first line to:

if ($_FILES && $_FILES['files']['tmp_name'][0] !== '') {
       

fixed my problem.

Hope it helps someone

Stephniestepladder answered 12/7, 2024 at 9:51 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.