web-dev-qa-db-fra.com

Comment télécharger et enregistrer des fichiers avec le nom désiré

j'utilise ce code pour télécharger des fichiers (images dans un dossier)

<form action='' method='POST' enctype='multipart/form-data'>
<input type='file' name='userFile'><br>
<input type='submit' name='upload_btn' value='upload'>
</form>

<?php
$target_Path = "images/";
$target_Path = $target_Path.basename( $_FILES['userFile']['name'] );
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target_Path );
?>

lorsque le fichier (image) est enregistré sur le chemin spécifié ... QUE faire si je veux enregistrer le fichier avec le nom de votre choix ...

j'ai essayé de remplacer CECI

$target_Path = $target_Path.basename( $_FILES['userFile']['name'] );

AVEC ÇA

$target_Path = $target_Path.basename( "myFile.png" );

MAIS ça ne marche pas

47
Moon

Tu peux essayer ça,

$info = pathinfo($_FILES['userFile']['name']);
$ext = $info['extension']; // get the extension of the file
$newname = "newname.".$ext; 

$target = 'images/'.$newname;
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target);
105
Manie

Cela fonctionnerait très bien. Vous pouvez utiliser HTML5 pour autoriser uniquement le téléchargement de fichiers image. C'est le code pour uploader.htm -

<html>    
    <head>
        <script>
            function validateForm(){
                var image = document.getElementById("image").value;
                var name = document.getElementById("name").value;
                if (image =='')
                {
                    return false;
                }
                if(name =='')
                {
                    return false;
                } 
                else 
                {
                    return true;
                } 
                return false;
            }
        </script>
    </head>

    <body>
        <form method="post" action="upload.php" enctype="multipart/form-data">
            <input type="text" name="ext" size="30"/>
            <input type="text" name="name" id="name" size="30"/>
            <input type="file" accept="image/*" name="image" id="image" />
            <input type="submit" value='Save' onclick="return validateForm()"/>
        </form>
    </body>
</html>

Maintenant le code pour upload.php -

<?php  
$name = $_POST['name'];
$ext = $_POST['ext'];
if (isset($_FILES['image']['name']))
{
    $saveto = "$name.$ext";
    move_uploaded_file($_FILES['image']['tmp_name'], $saveto);
    $typeok = TRUE;
    switch($_FILES['image']['type'])
    {
        case "image/gif": $src = imagecreatefromgif($saveto); break;
        case "image/jpeg": // Both regular and progressive jpegs
        case "image/pjpeg": $src = imagecreatefromjpeg($saveto); break;
        case "image/png": $src = imagecreatefrompng($saveto); break;
        default: $typeok = FALSE; break;
    }
    if ($typeok)
    {
        list($w, $h) = getimagesize($saveto);
        $max = 100;
        $tw = $w;
        $th = $h;
        if ($w > $h && $max < $w)
        {
            $th = $max / $w * $h;
            $tw = $max;
        }
        elseif ($h > $w && $max < $h)
        {
            $tw = $max / $h * $w;
            $th = $max;
        }
        elseif ($max < $w)
        {
            $tw = $th = $max;
        }

        $tmp = imagecreatetruecolor($tw, $th);      
        imagecopyresampled($tmp, $src, 0, 0, 0, 0, $tw, $th, $w, $h);
        imageconvolution($tmp, array( // Sharpen image
            array(−1, −1, −1),
            array(−1, 16, −1),
            array(−1, −1, −1)      
        ), 8, 0);
        imagejpeg($tmp, $saveto);
        imagedestroy($tmp);
        imagedestroy($src);
    }
}
?>
7
NULL-POINTER

Vous pouvez récupérer le code source de la démonstration ici: http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/

Il est prêt à être utilisé ou vous pouvez le modifier pour répondre aux besoins de votre application. J'espère que ça aide :)

1
Abhinav Singh

je sais ce qui ne va pas, vous voyez que vous avez utilisé "" au lieu de '' dans ce

$target_Path = $target_Path.basename( 

   "myFile.png"

);
0
SuperMarioMC98

Configurez le fichier "php.ini"

Tout d'abord, assurez-vous que PHP est configuré pour autoriser le téléchargement de fichiers. Dans votre fichier "php.ini", recherchez la directive file_uploads et définissez-la sur On :

file_uploads = On 

Créer le formulaire HTML

Créez ensuite un formulaire HTML permettant aux utilisateurs de choisir le fichier image qu'ils souhaitent télécharger:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Quelques règles à suivre pour le formulaire HTML ci-dessus: Assurez-vous que le formulaire utilise method = "post" Le formulaire a également besoin de l'attribut suivant: enctype = "multipart/form-data". Il spécifie le type de contenu à utiliser lors de la soumission du formulaire. Sans les exigences ci-dessus, le téléchargement de fichier ne fonctionnera pas. Autres points à noter: L'attribut type = "fichier" de la balise affiche le champ de saisie sous la forme d'un contrôle de sélection de fichier, avec un bouton "Parcourir" à côté du contrôle de saisie. Le formulaire ci-dessus envoie des données à un fichier appelé "upload.php ", que nous allons créer ensuite.

Créer le fichier de téléchargement PHP Script

Le fichier "upload.php" contient le code permettant de télécharger un fichier:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>
0
Mubin

utiliser ceci pour le chemin cible pour le téléchargement

<?php
$file_name = $_FILES["csvFile"]["name"];
$target_path = $dir = plugin_dir_path( __FILE__ )."\\upload\\". $file_name;
echo $target_path;
move_uploaded_file($_FILES["csvFile"]["tmp_name"],$target_path. $file_name);
?>
0
harish kumar