web-dev-qa-db-fra.com

Télécharger une image dans une page Wordpress en utilisant PHP

Bonjour les gens géniaux de SE! :)

Bon, c’est un peu tiré par les cheveux, mais j’essaie d’obtenir un formulaire HTML avec un script de téléchargement PHP pour fonctionner dans une page Wordpress. Je ne peux pas utiliser de plugin. C'est censé être une page Web pour une équipe de design où les clients peuvent télécharger des images via le formulaire html (nécessiteront un identifiant et des choses, mais je traiterai de cela plus tard)

J'ai un thème enfant, j'ai créé une page appelée "upload" et j'édite le fichier "page-upload.php"

Mon formulaire dans page-upload.php

        <form action="<?php bloginfo('template_url'); ?>/upload.php" method="post" enctype="multipart/form-data">
           <input type="file" name="file" />
            <input type="submit" name="submit" value="Upload" />
        </form>

form action = "upload.php" n'a pas localisé le fichier correctement. Après quelques recherches sur Google, j'ai trouvé ceci:

<? php bloginfo ('template_url'); ?>/upload.php "

qui parviennent à localiser le fichier, mais au lieu de télécharger l’image, cela fait écho à tous les échos de PHP.

J'ai utilisé l'exemple de téléchargement de fichier W3Schools PHP pour bien démarrer, mais ce n'était pas aussi simple que je l'espérais ^ _ ^

http://www.w3schools.com/php/php_file_upload.asp

<?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;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
    }
}
    ?>

Est-ce donc possible de le faire dans WP avec PHP et HTML ou aurait-il besoin de JS\jQuery? :)

1
thePHPn00b

L'implémentation de votre propre formulaire de téléchargement comme celui-ci peut constituer une vulnérabilité majeure en matière de sécurité. Vous voudrez peut-être plutôt utiliser une bibliothèque/un script lorsque ces problèmes potentiels sont déjà traités correctement.

En voici un dont je me souviens avoir utilisé avec succès un projet dans un but similaire (vidéo téléchargée par l'utilisateur) ... bien que ce soit peut-être plus que ce dont vous avez besoin, il contient plus d'exemples et de documentation qu'un exemple Web simplifié: PL Upload

EDIT: Je viens de me rappeler que c’était en fait mon uploader de secours pour ce projet. Le principal utilisé était ResumeableJS car il supportait la reprise de fichier pour des fichiers volumineux (très pratique pour les téléchargements vidéo!)

2
majick