web-dev-qa-db-fra.com

Comment créer une destination (dossier) dans PHP en utilisant move_uploaded_file ()?

Je souhaite télécharger des fichiers avec PHP et j'utilise move_uplload_files pour les copier dans le dossier de destination souhaité. Tout fonctionne correctement avec ceci:

if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'))
die("success");
else
die("error");

Mais quand j'essaye ça

$Rand =  chr(Rand(97, 122)). chr(Rand(97, 122)). chr(Rand(97, 122));
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$Rand))
die("success");
else
die("error");

Je vais avoir une erreur, et il ressemble à move_uploaded_files ne peut pas créer des dossiers. Comment puis-je faire ceci ?

Fondamentalement, je cherche un moyen de le faire, comme file_put_contents(), qui crée le chemin s'il n'existe pas.

14
user529649

Utilisez mkdir() .

Si vous devez créer plusieurs dossiers, par exemple en passant a/b/c, définissez le troisième argument sur TRUE.

Vous pouvez tester si c'est déjà là, et ajouter si pas comme si ....

$path = 'abc';

if ( ! is_dir($path)) {
    mkdir($path);
}
29
alex

Utilisez quelque chose comme ceci:

$folder = "uploads"; 
if(!is_dir($folder)) mkdir($folder);

is_dir() vérifie si le dossier est là.

5
Vikash

Créez d'abord le répertoire en utilisant mkdir() 

  $Rand =  chr(Rand(97, 122)). chr(Rand(97, 122)). chr(Rand(97, 122));
    mkdir('./uploades/'.$Rand);
    if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$Rand))
    die("success");
    else
    die("error");
1
Shakti Singh

Cela fonctionne pour moi:

$path = "upload/";
$name = $_FILES["file"]["name"];
// Remove dangerous characters from filename.
$name = str_replace('..', '', $name);
$name = str_replace('/', '', $name);
$name = str_replace('\\', '', $name);

if (($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
&& ($_FILES["file"]["size"] < 2000000)) {
      if ($_FILES["file"]["error"] > 0) {
        echo "Error " . $_FILES["file"]["error"] . "<br>";
      } else {
        if(file_exists($path.$name)){
            echo "$path$name already exists. ";
        } else {                
            @mkdir($path, 0666, true);  // Create non-executable upload folder(s) if needed.
            move_uploaded_file($_FILES["file"]["tmp_name"], $path.$name);
            echo "Stored in: $path$name";
        }
    }
} else {
    echo "Invalid file. Allowed are JPG smaller than 2 MB.";
}
0
Cees Timmerman