Valeria
Valeria

Reputation: 160

move_uploaded_file(...): failed to open stream: No such file or directory

I try to insert images in my database with PHP and MySQL with a temporary folder.

I use laravel and this is my controller:

if(isset($_FILES['img_masc']))
{
    $img=$_FILES['img_masc']['name'];
    $ruta= $_FILES['img_masc']['tmp_name'];
}

$destino='../../../Perf_Masc/'.$img;
$masc->img=$destino;
//copy($ruta, $destino);
move_uploaded_file($ruta, $destino); //line 49

This is my view:

<form method="POST" action="/RegMasc" enctype= "multipart/form-data" >
    <div>
        <input required name="img_masc" type="file"/>
    </div>

This is my error:

ErrorException in line 49: move_uploaded_file(../../../Perf_Masc/AF5.jpg): failed to open stream: No such file or directory

I try with so much things and also with the copy function and is not working anyway

Upvotes: 5

Views: 11413

Answers (2)

Ikhlak S.
Ikhlak S.

Reputation: 9044

Change your forward slash to a back slash.

First define these

//Define back slash so that you can use it anywhere later
defined("DS") ? null : define("DS", DIRECTORY_SEPARATOR);
// Define your website siteroot
defined("SITE_ROOT") ? null : define("SITE_ROOT", "C:".DS."wamp".DS."www".DS."your_website");

Now move your files

$file_name=$_FILES['file']['name'];
$file_tmp=$_FILES['file']['tmp_name'];
$file_upload_to=SITE_ROOT . DS . "Perf_Masc";

move_uploaded_files($file_tmp, $file_upload_to . DS . $file_name);

If you have a hard time defining the root of your website, you can create a php file in your root directory and then echo __DIR__ for PHP 5.3 or later, for earlier versions use echo dirname(__FILE__).

Upvotes: 1

Anto S
Anto S

Reputation: 2449

In your Config file or some common file define your path as below

define('DOCROOT', $_SERVER['DOCUMENT_ROOT'].'<YOUR PROJECT DIRECTORY>/');

Include this common php in all your class file.

Then

 $destino= DOCROOT.'Perf_Masc/'.$img; // HERE DOCROOT is defined in config.

Upvotes: 8

Related Questions