2010-07-23 12 views
0

J'utilise un script pour télécharger une photo (écrite par moi-même) qui permet à l'utilisateur de sélectionner plus de 1 fichiers, en utilisant Flash. Lorsque l'utilisateur clique sur Télécharger, as3 affichera le fichier téléchargé sur upload.php, redimensionnez-le et sauvegardez-le un par un.Problème avec Flash PHP upload

Le problème: Dans le serveur de production, si je suis en train de charger de nombreuses photos et la taille de photos sont très grandes,> 2MB, la progression du chargement juste coincé dans la moitié, seules les premières photos téléchargées avec succès.

Ce que j'ai trouvé: Si j'ai essayé avec plus petite photos de taille, ou si je désactivé le redimensionnement scénario dans upload.php, il n'y a pas de problème à all.Furthermore, le travail scénario bien dans mon localhost avec un processeur plus récent par rapport au serveur problématique avec l'ancien modèle)

Le script de redimensionnement est simple. Il vérifie simplement si la résolution de l'image est grande et utilise imagecopyresampled() pour redimensionner l'image si nécessaire.

J'ai essayé d'annuler la ressource image dans upload.php pour libérer de la mémoire, mais cela n'aide pas. Quoi d'autre pourrait être le problème?

+0

Je suppose que l'appel à imagecopyresampled() trop souvent cause un problème. Le passage à imagecopyresized() fonctionne mieux (permet de télécharger plus de fichiers avec un léger risque de problème), mais la qualité est un problème. Si j'ai supprimé (imagecopyresampled()), aucun problème. – neobie

+0

Si vous utilisez Flash 10 et la classe 'FileReference', vous pouvez charger l'image directement dans Flash et la redimensionner sur le client avant de l'envoyer au serveur. – Cameron

Répondre

0

J'ai résolu le problème.

Il arrive quand j'utiliser le code comme ceci dans AS3:

for(var i:Number = 0; i< fileList.length; i++) { 
    fileList[i].upload(new URLRequest(param.uploadURL+"&sessionid="+param.session_id)); 
} 

Le code semble comme pousser le script upload.php de manière très fastidieux.

J'ai fait des changements à la fois mon AS3 et JS, de sorte que la fonction appel JS à télécharger AS3() que chaque fois qu'un téléchargement de fichier est terminé (de l'événement auditeur Event.COMPLETE)

En faisant ainsi, AS3 coutume appel pour upload.php de manière synchrone pour plusieurs fichiers. Au lieu de cela, attendez qu'un fichier ait terminé le téléchargement, puis appelez pour un autre téléchargement pour le fichier suivant.

1

Si je me souviens bien, il y a une limite de téléchargement de 2 Mo en PHP, vous pouvez le changer dans le fichier php.ini.

+0

à partir de: http://www.kavoir.com/2010/02/php-get-the-file-uploading-limit-max-file-size-allowed-to-upload.html $ max_upload = (int) (ini_get ('upload_max_filesize')); $ max_post = (int) (ini_get ('post_max_size')); $ memory_limit = (int) (ini_get ('memory_limit')); $ upload_mb = min ($ max_upload, $ max_post, $ memory_limit); – Casey

+0

non, ce n'est pas le problème. Le problème se produit uniquement si je télécharge "plusieurs fichiers de grande taille". – neobie