2010-11-20 11 views
0

J'essaie d'utiliser Uploadify pour la première fois. Je n'ai aucun problème avec le téléchargement du fichier. Cela fonctionne parfaitement. Mon problème est que mon script PHP ne reçoit pas une seule variable $ _REQUEST de Uploadify, ce qui signifie évidemment que je ne peux pas garder une trace des photos ou supprimer celles qui devraient être supprimées. Voici ce que j'utilise:

$('.upload').uploadify({ 
    'uploader' : 'uploadify/uploadify.swf', 
    'script' : 'upload.php', 
    'cancelImg' : 'uploadify/cancel.png', 
    'folder' : 'img/sections/' + page, 
    'auto'  : true, 
    'multi'  : false, 
    'method' : 'post', 
    'fileExt' : '*.jpg;*.jpeg;*.gif;*.png', 
    'onComplete': function(event, ID, fileObj, response, data) { 
      window.location.replace("upload.php");       
    } 
}); 

Je suis en train d'envoyer le champ id d'entrée au script PHP en mettant dans ma fonction de clic (chaque champ affiche la photo actuelle et lorsque vous cliquez dessus disparaît et révèle la forme Uploadify):

Uploader.clk = function() { 
    pic = $(this).find('input.upload').attr('id'); 
    field = "#" + pic; 
    $(field).uploadifySettings('scriptData' : { 'field' : field }); 
    // all my jQuery animations 
} 

Bien sûr, cela ne fonctionne pas pour moi, mais la documentation Uploadify laisse beaucoup à désirer. Mon problème est définitivement dans l'appel uploadifySettings comme quand je le commente tout le reste fonctionne bien. Même si je mets

'scriptData': { 'foo': 'bar'}

dans mes paramètres que je reçois toujours seulement sessionid et deux champs appelés "utma" et "vsid" dans mon tableau $ _REQUEST.

Donc, ma question est comment puis-je dire à mon script PHP dans quel domaine il effectue des opérations?

Répondre

0

Deux questions ici, il n'y a pas besoin de sélectionner l'élément deux fois, vous pouvez juste faire:

$(this).find("input.upload").uploadifySettings(...); 

Et vous devez passer vos paramètres comme un objet (il est juste une déclaration d'étiquette actuellement), comme celui-ci :

Uploader.clk = function() { 
    $(this).find('input.upload') 
     .uploadifySettings({'scriptData' : { 'field' : field }}); 
    // all my jQuery animations 
} 

Notez également que per the documentation vous devez utiliser onSelectOnce de toute façon:

Si vous mettez à jour l'option scriptData via uploadifySettings(), il ne sera pas mis à jour en raison de problèmes de synchronisation avec onOpen. Au lieu de cela, utilisez la fonction onSelectOnce pour modifier la variable scriptData lors d'un téléchargement automatique.

Dans l'ensemble, il devrait ressembler à ceci:

$('.upload').uploadify({ 
    'uploader' : 'uploadify/uploadify.swf', 
    'script' : 'upload.php', 
    'cancelImg' : 'uploadify/cancel.png', 
    'folder' : 'img/sections/' + page, 
    'auto'  : true, 
    'multi'  : false, 
    'method' : 'post', 
    'fileExt' : '*.jpg;*.jpeg;*.gif;*.png', 
    'onComplete': function(event, ID, fileObj, response, data) { 
      window.location.replace("upload.php");       
    }, 
    'onSelectOnce': function(event,data) { 
      $(this).uploadifySettings({'scriptData' : { 'field' : field }}); 
    }   
}); 
+0

Haha, je ne sais vraiment pas pourquoi je l'ai fait cette variable supplémentaire. Frustration de la tête osseuse. Cela a plus de sens, mais maintenant mon téléchargement ne démarre même pas (la barre de progression arrive et reste là sans% montré). Attend-il maintenant que j'appelle la méthode startUpload()? –

+0

@Thomas - obtenez-vous des erreurs JavaScrpt dans la page? –