web-dev-qa-db-fra.com

Téléchargement de média - choisissez un seul fichier

Il est possible de restreindre le processus de téléchargement à un seul fichier. Désormais, une personne peut sélectionner divers fichiers sur un ordinateur, je cherche un moyen de limiter cette fonctionnalité à un seul fichier.

Merci d'avance.

WordPress contient 2 mises à jour multimédia. Le programme de téléchargement Flash permet la sélection de plusieurs fichiers alors que le programme de téléchargement par navigateur n'autorise qu'un fichier à la fois.

Pour désactiver le programme de téléchargement Flash, ajoutez le filtre suivant à functions.php

add_filter('flash_uploader', create_function('$flash', 'return false;'));

MODIFIER

Après une enquête plus approfondie, l'utilisation de create_function n'est probablement pas une bonne idée. Un meilleur moyen de supprimer le filtre serait:

function disable_flash_uplaoder() {
        return $flash = false;
}
add_filter( 'flash_uploader', 'disable_flash_uploader', 7 ); 
1
Chris_O

La réponse que Chris a donnée est Nice mais ne limite pas vraiment le téléchargement à un seul fichier, mais un fichier à la fois, afin que l'utilisateur puisse télécharger autant de fichiers qu'il le souhaite, mais vous pouvez également limiter le téléchargement sur le programme de téléchargement flash à un seul fichier. fichier à l'aide de wp_handle_upload_prefilter hook, jetez un oeil à Mikes répond à une question similaire.

1
Bainternet

Vous pouvez modifier le programme de téléchargement Flash pour accepter un seul fichier via le paramètre BUTTON_ACTION . Vous pouvez modifier cela via la configuration SWFUpload (codée en dur dans WordPress) ou via la méthode setButtonAction() de l'objet SWFUpload généré - mais cela ne fonctionne qu'après le fichier Flash a été chargé. J'ai réussi à le faire en accrochant le crochet swfupload_loaded_handler:

var wpse15264_original_onload = SWFUpload.onload;
SWFUpload.onload = function() {
    wpse15264_original_onload();
    swfu.addSetting( 'swfupload_loaded_handler', function() {
        this.setButtonAction( SWFUpload.BUTTON_ACTION.SELECT_FILE );
    } );
}

Vous pouvez sortir ceci après le code SWFUpload via le crochet post-html-upload-ui .

Ce code n'ajoute pas un gestionnaire à l'événement swfupload_loaded_handler; il remplace le gestionnaire actuel. Cela ne devrait poser aucun problème, car WordPress n'utilise pas ce gestionnaire, mais si cela se produit à l'avenir, vous devez vous assurer de sauvegarder le gestionnaire d'origine et de l'exécuter également (comme je l'avais fait avec le gestionnaire onload).

Bien entendu, cela n’empêche pas les utilisateurs d’utiliser le téléchargeur plusieurs fois. Voir la référence de Bainternet pour une solution à ce problème.

0
Jan Fabry