2 votes

Jquery Uploadify images multiples instance et appeler chaque instance l'achèvement de la précédente

J'utilise Jquery Uploadify pour le téléchargement d'images avec PHP, ici j'ai plusieurs instances d'Uploadify et chaque instance télécharge des images dans des dossiers différents.

Je veux que la deuxième instance d'uploadify commence à télécharger les images seulement après que la première instance d'uploadify ait téléchargé l'image sélectionnée.

$('#listing_image'). $('#listing_image').uploadifyUpload() ; $('#listing_image1').uploadifySettings('folder', 'listing_image1_TempImage') ; $('#listing_image1').uploadifyUpload() ;

c'est-à-dire que 'listing_image1' sera appelé lorsque le traitement de 'listing_image' sera terminé. Comment puis-je obtenir ce comportement ?

2voto

Webbies Points 462

Vous pouvez créer une fonction "callback", qui se déclenche lorsque le premier téléchargement est terminé.

$('#listing_image').uploadify({
 'folder'    : '/listing_image_TempImage',
 onComplete: function(){ 
  $('#listing_image1').uploadify({
   'folder'    : '/listing_image_TempImage'
  });
 }
});

Avec 6 téléchargements (l'un après l'autre) :

$('#listing_image').uploadify({
    'folder'    : '/listing_image_TempImage',
    onComplete: function(){ 
        $('#listing_image1').uploadify({
            'folder'    : '/listing_image_TempImage1',
            onComplete: function(){ 
                $('#listing_image2').uploadify({
                    'folder'    : '/listing_image_TempImage2',
                    onComplete: function(){ 
                        $('#listing_image3').uploadify({
                            'folder'    : '/listing_image_TempImage3',
                            onComplete: function(){ 
                                $('#listing_image4').uploadify({
                                    'folder'    : '/listing_image_TempImage4',
                                    onComplete: function(){ 
                                        $('#listing_image5').uploadify({
                                            'folder'    : '/listing_image_TempImage5'   
                                        });
                                    }   
                                });
                            }           
                        });
                    }
                });
            }
        });
    }
});

Je suppose que c'est cet uploadify dont vous parlez.

Pour une liste complète des rappels disponibles, regardez dans les docs .

1voto

Webbies Points 462

Je ne peux pas encore ajouter un commentaire à votre réponse. Je l'écris donc ici à la place.

Essayez de faire fonctionner un téléchargement en utilisant ceci (assurez-vous que les liens pointent vers les bons emplacements) :

$('#listing_image').uploadify({
    'uploader'  : 'uploadify.swf',
    'script'    : 'uploadify.php',
    'cancelImg' : 'cancel.png',
    'folder'    : '/listing_image_TempImage',
    onComplete: function(){ 
        // Do oncomplete stuff. 
    }
});

Si vous arrivez à le faire fonctionner, vous devriez pouvoir le faire.

var uploads = [2,4,5]; // Only number 2,4 and 5
var numberofuploads = uploads.length; // How many is that?
var folderlist = [0, '/folder1', '/folder2', '/folder3', '/folder4', '/folder5', '/folder6']; // List of folders to upload to
var listingimageslist = [0, '#listing_image1', '#listing_image2', '#listing_image3', '#listing_image4', '#listing_image5', '#listing_image6']; // List of form selectors. 

var folder = folderlist[uploads[0]]; // What folder should this form upload to
var listingimages = listingimageslist[uploads[0]]; // With what selector can the form be found?
if (numberofuploads > 1)
{
    var next = 1; // What upload to initiate after this one?
}
initUpload(listingimages,folder); // make the upload thing work. 

function initUpload(e,folder)
{
    $(e).uploadify({
        'folder'    : folder,
        'uploader'  : 'uploadify.swf',
        'script'    : 'uploadify.php',
        'cancelImg' : 'cancel.png',
        onComplete: function(){ 
            var folder = folderlist[uploads[next]];
            var listingimages = listingimageslist[uploads[next]];
            next++
            if (numberofuploads != next)
            {
                initUpload(listingimages,folder);
            }
        }
    });
};

Je n'ai pas testé le code, mais vous devriez être capable de le faire fonctionner si vous connaissez un peu de javascript.

Rappelez-vous d'avoir tout votre code jQuery dans un $(document).ready comme ceci :

$(document).ready(function() {
 // Insert code here
});

0voto

Pekka 웃 Points 249607

Si vous utilisez des sessions, l'exécution du script va être retardée du côté du serveur, de sorte que chaque téléchargement sera traité l'un après l'autre de toute façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X