web-dev-qa-db-fra.com

Création d'un formulaire de téléchargement de plusieurs fichiers sur le serveur frontal pour les pièces jointes

J'essaie de créer un formulaire public où les utilisateurs peuvent télécharger plusieurs images à joindre à un message particulier. Je peux le faire fonctionner avec des images uniques grâce à cet article à Golden Apples Design.

Le problème est que je suis aux prises avec plusieurs téléchargements de fichiers. J'ai changé

<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" name="upload_attachment">
  <input type="submit">
<form>

à

<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" multiple=multiple name="upload_attachment[]">
  <input type="submit">
<form>

Le tableau $ _FILES est maintenant dans un format différent et le gestionnaire de fichiers ne le gère pas correctement. Quelqu'un peut-il m'aider à comprendre comment passer en revue correctement le tableau et donner au gestionnaire de fichiers le format souhaité?

3
Dalton

Ce n'est peut-être pas la façon la plus élégante de le faire (je ne suis pas sûr si le remplacement de la variable globale $ _FILES est même autorisé), mais cela semble fonctionner:

global $post;
if ($_FILES) {
    $files = $_FILES['upload_attachment'];
    foreach ($files['name'] as $key => $value) {
        if ($files['name'][$key]) {
            $file = array(
            'name'     => $files['name'][$key],
            'type'     => $files['type'][$key],
            'tmp_name' => $files['tmp_name'][$key],
            'error'    => $files['error'][$key],
            'size'     => $files['size'][$key]
            );

            $_FILES = array("upload_attachment" => $file);

            foreach ($_FILES as $file => $array) {
                $newupload = wp_insert_attachment($file,$post->ID);
            }                                   
        }
    }
}
2
Dalton