web-dev-qa-db-fra.com

Comment envoyer des données supplémentaires à l'aide de PLupload?

J'utilise plupload pour faire un téléchargement de fichier ajax. Maintenant, la classe plupload.Uploader a de nombreuses options mais aucune n'est une donnée supplémentaire.

Par exemple :

var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'pickfiles',
    container : 'contact_container',
    max_file_size : '10mb',
    url : 'upload.php',
    flash_swf_url : '/plupload/js/plupload.flash.swf',
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap',
    filters : [
        {title : "Image files", extensions : "jpg,gif,png"},
        {title : "Zip files", extensions : "Zip"}
    ],
    resize : {width : 320, height : 240, quality : 90}
});

Ce que j'essaie de réaliser, c'est que j'ai un dossier sur mon serveur où tous les téléchargements sont enregistrés. J'ai besoin à l'intérieur du dossier de créer un sous-dossier pour chaque utilisateur qui y a téléchargé des fichiers. Comment puis-je ajouter des données comme l'ID de l'utilisateur à l'instance de plupload.Uploader? Ou si je vais envelopper un formulaire à l'intérieur de la div du conteneur, pourrai-je le voir dans $ _REQUEST? Ou existe-t-il un autre moyen de parvenir à cela?

40
eric.itzhak

Avez-vous essayé d'utiliser le paramètre pour multipart_params? Ajoutez une option supplémentaire à votre plupload.Uploader comme ceci:

var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'pickfiles',
    container : 'contact_container',
    max_file_size : '10mb',
    url : 'upload.php',
    flash_swf_url : '/plupload/js/plupload.flash.swf',
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap',
    filters : [
        {title : "Image files", extensions : "jpg,gif,png"},
        {title : "Zip files", extensions : "Zip"}
    ],
    resize : {width : 320, height : 240, quality : 90},
    multipart_params : {
        "name1" : "value1",
        "name2" : "value2"
    }
});

Vous devrez ensuite traiter les valeurs dans le fichier qui gère le téléchargement (upload.php par défaut). Je pense que les valeurs sont capturées par $_POST Mais vous pouvez utiliser $_REQUEST Juste pour être sûr.

J'ai utilisé jQuery pour assigner des valeurs à la volée, donc au lieu de "name1" : "value1" Vous pouvez utiliser quelque chose comme "name1" : $("#name1").val(), où # nom1 pourrait être une entrée ailleurs sur la page.

La documentation de Plupload est un peu clairsemée pour certains de ces paramètres.

72
elconejito

Vous pouvez utiliser uploader.settings.multipart_params["name1"] = yourValue; mais "name1" doit être déclaré dans la configuration de l'uploader:

multipart_params : {
    "name1" : "value1",
    "name2" : "value2"
}
6
pb ty

Vous pouvez aussi utiliser

uploader.settings.url = "upload.php?param1=whatever"

et il suffit de le passer comme une variable get.

3
Briscoe

Si vous devez ajouter dynamiquement des paramètres à chaque téléchargement de fichier, vous pouvez le faire:

uploader.bind('BeforeUpload', function(up, file) {
    up.settings.multipart_params = {

        "parameter1": "value1",
        "paremeter2": "value2"

    };
});
3
Agu Dondo