1 votes

Obtenir des informations après le téléchargement de fileReference ?

Normalement, lorsque j'envoie des informations à des scripts PHP via URLLoader, le PHP renvoie différents codes de réussite afin que mes fichiers Flash répondent en fonction du code de réussite renvoyé par le PHP (0 est un échec, 1 une réussite, 2 est un autre code d'erreur, etc.)

J'essaie maintenant de soumettre un formulaire contenant un certain nombre de données (nom, email, date d'anniversaire, etc.) et de télécharger un fichier. J'utilise fileReference pour télécharger le fichier et envoyer les variables supplémentaires avec la demande de téléchargement. Les informations arrivent bien dans mon fichier PHP. Cependant, je n'arrive pas à trouver un moyen de récupérer les informations du fichier PHP. En d'autres termes, je veux que le PHP affiche "success=1" si le fichier est chargé avec succès, "success=2" s'il y a eu une erreur lors de l'insertion des données dans la base de données MySQL, etc. Normalement, je pourrais simplement regarder _myURLLoader.data mais dans ce cas, j'ai besoin de référencer _fileReference.data qui est en fait les données bitmap du fichier.

Quelqu'un a-t-il une idée ?

Merci de votre attention !

--éric

2voto

Bill H Points 19

Vous pouvez utiliser le statut http pour indiquer à flash ce qui se passe lorsque vous téléchargez un fichier.

Du côté de php, pour indiquer à flash que le fichier n'a pas été reçu, je fais ce qui suit :

if(!isset($_FILES['Filedata']['name']))
{
header("HTTP/1.x 500");
print "RESULTS=FAIL";
exit();
}

Si le fichier est plus volumineux que ce que je souhaite :

if(!isset($_FILES['Filedata']['size']) > $maximumuploadsize)
{
header("HTTP/1.x 406");
print "RESULTS=FAIL";
exit();
}

Etc.

Ensuite, du côté du flash, je mettrai en place un listener .onHTTPError tel que :

photo.onHTTPError = function(file:FileReference, httpError:Number)
{
switch (httpError)
{
case 500:
// Handle missing file
break;
case 406:
// Handle file too large
break;
}
}

Bill H

1voto

Cay Points 3470

Depuis Flash Player 9.0.28.0 (je crois), vous pouvez utiliser la fonction uploadCompleteData événement. Avant cela, il fallait utiliser la technique décrite par Bill H ^^

0voto

jW. Points 3430

Je vérifierais quelques points.

Tout d'abord, quelle est la valeur de votre error_reporting ? Il se peut que vous ayez une erreur dans votre PHP et que rien ne sorte parce que l'exécution s'est arrêtée.

Essayez également d'utiliser la fonction error_log() et vérifiez dans les journaux ce qui a été produit.

0voto

TroyJ Points 620

Une approche totalement différente consiste à installer Fiddler sur votre système. Si vous avez affaire à du trafic https, vous pouvez l'utiliser pour décrypter toutes les transmissions via votre nic. Cela n'aidera pas votre application flex à gérer les réponses, mais vous pourrez observer les réactions du serveur pendant le débogage et le développement.

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