Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Upload en Flash


julkien

Messages recommandés

Bonjour tous le monde les gens,

 

Au grès de mes recherches sur internet j'ai trouver ce .fla qui permet d'uploader des fichiers via une interface en flash.

 

Je suis a la recherche d'une telle chose car l'upload de fichier via php foire passer 30 secondes (time out).

 

Ce script fonctionne jusqu'à un peu moins de 5 mo, mais je désire pouvoir aller jusqu'à' a 8 Mo (la limite de mon hébergeur).

 

De plus il faudrait pouvoir retourner le nom du fichier dans une variable (appelons la $fname) ainsi qu'une redirection en fin d'upload (avec cette variable dans l'url) vers une autre page.

 

Je remercie tous ceux et celle qui sauront m'aider, car je ne connais absolument rien en Flash.

 

Cordialement,

 

PS: voici le script en question :

 

import flash.net.FileReference;
import flash.net.FileReferenceList;
var listener:Object = new Object();


//============================================================================
// Définition des constantes du script
//============================================================================
fileURL = "upload.php";
MaxSize = 20000000;
//fileURL = "/cgi-bin/upload.pl";
//MaxSize = -1;


//============================================================================
// Formatage de la taille des fichiers
//============================================================================
function GetSizeFormat(Size:Number){
 if (Size >= 1000)
return Math.floor(Size/1000) + " Ko";
 else
return Size + " octets";
}

//============================================================================
// Sélection des fichiers + uploader la liste des fichiers
//============================================================================
listener.onSelect = function(fileRefList:FileReferenceList) {
 browse_btn.enabled = false;
 trace("onSelect");
 var list:Array = fileRefList.fileList;
 var file:FileReference;
 for(var i:Number = 0; i < list.length; i++) {
file = list[i];
trace("name: " + file.name);
trace(file.addListener(this));
if ((file.size <= MaxSize) or (MaxSize < 0)) {
  file.upload(fileURL);
} else {
  var item:Object = new Object();
  item.FileSize = "Annule";
  item.FileName = file.name;
  grid.addItem(item);
}
 }
}

//============================================================================
// Annulation du dialogue d'ouverture de fichiers
//============================================================================
listener.onCancel = function():Void {
 trace("onCancel");
 browse_btn.enabled = true;
 stat.text = "";
}

//============================================================================
// Evénement d'ouverture d'un fichier
//============================================================================
listener.onOpen = function(file:FileReference):Void {
 trace("onOpen: " + file.name);
}

//============================================================================
// Affichage de la progression
//============================================================================
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
 if (bytesTotal == -1)
stat.text = "Impossible de determiner le poids du fichier "+file.name;
 else {
stat.text = "Telechargement de " + file.name + " : " +
  Math.floor((bytesLoaded/file.size)*100) + "% of " +
  GetSizeFormat(file.size);
browse_btn.enabled = false;
 }
}

//============================================================================
// Téléchargement completé
//============================================================================
listener.onComplete = function(file:FileReference):Void {
 trace("onComplete: " + file.name);
 stat.text = "Le transfert est maintenant termine !";
 browse_btn.enabled = true;
 var item:Object = new Object();
 item.FileSize = GetSizeFormat(file.size);
 item.FileName = file.name;
 grid.addItem(item);
}

//============================================================================
// Evénement gestion des erreurs
//============================================================================
listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
 trace("onHTTPError: " + file.name + " httpError: " + httpError);
 stat.text = "HTTPError = Erreur de transmission du fichier " + file.name;
}
listener.onIOError = function(file:FileReference):Void {
 trace("onIOError: " + file.name);
 stat.text = "IOError = Erreur de transmission du fichier " + file.name;
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
 trace("onSecurityError: " + file.name + " errorString: " + errorString);
 stat.text = "SecurityError = Erreur de transmission du fichier " + file.name + ". " + errorString;
}

//============================================================================
// Dialogue de sélection des fichiers
//============================================================================
browse_btn.onRelease = function():Void {
 stat.text = "Selection des fichiers a telecharger...";
 browse_btn.enabled = false;
 fileRef.browse(allTypes);
}

//============================================================================
// Main
//============================================================================
var fileRef:FileReferenceList = new FileReferenceList();
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Tous fichiers (*.*)";
imageTypes.extension = "*.*;";
allTypes.push(imageTypes);
fileRef.addListener(listener);

Lien vers le commentaire
Partager sur d’autres sites

Si la connexion au serveur et la communication à la page qui reçoit le fichier provoque un timeout, qu'est-ce qui te fait croire qu'en utilisant le plugin Flash côté client tu vas réussir à contourner ce problème ?

Tu devrais plutôt chercher à modifier la durée du timeout, soit par une modification du fichier php.ini, soit par un ini_set() !

Une autre solution consisterait à éviter d'utiliser PHP pour l'upload du fichier, mais cela nécessite de creuser chez ton hébergeur pour savoir si tu peux utiliser un autre langage côté serveur, des CGI, bref autre chose...

Lien vers le commentaire
Partager sur d’autres sites

Salut Kewlcat,

 

Je peux effectivement utiliser les CGI avec mon hébergement chez OVH, par contre, je ne peux pas regler le time-out car c'est un mutualiser, enfin je pense...

 

Sinon je sais pas comment mettre en place le cgi, d'ailleurs cette interface en flash permet de passer en cgi.

 

Si tu peux me guider, je t'en remercie d'avance :P

Lien vers le commentaire
Partager sur d’autres sites

je ne peux pas regler le time-out car c'est un mutualisé
Même pas avec ini_set() ? L'interêt de ini_set() c'est qu'on peut modifier à la volée les réglages sans toucher au fichier php.ini auquel on n'a pas accès sur un serveur mutualisé.

 

d'ailleurs cette interface en flash permet de passer en cgi.
Un champ de type "file" dans un classique formulaire permet aussi "de passer en cgi"... Tu ne fais que modifier le choix de ce qui, côté serveur, va recevoir ton fichier...

 

Si tu peux me guider, je t'en remercie d'avance :)
Déjà, qui est ton hébergeur ? Ca nous permettra de déterminer comment (et si) tu peux mettre en oeuvre des CGI...

 

-- edit --

OVH, c'était écrit juste au-dessus... Désolé...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

j'ai essayer ceci :

ini_set('set_time_limit', 100)

 

et j'ai eu comme résultat :

Connexion intérompue

La connexion avec le serveur a été réinitialisée pendant le chargement de la page.

 

Après j'ai essayer comme ceci :

ini_set('set_time_limit', 0)

 

Et j'ai eu droit à :

Internal Server Error (500)

The server encountered an internal error or misconfiguration and was unable to complete your request.

 

 

Donc, si bien sûr je ne me suis pas planté, ça ne marche pas le ini_set()

 

Une autre idée peut être, parce que la je nage.

 

Merci de ton coup de main en tout cas :P

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Bonjour tous le monde,

 

Je déterre mon topic, car a force de chercher une solution, j'en ais trouver une qui fonctionne mais avec un autre souci en prime...

 

Donc, la seul solution que j'ai trouver c'est de faire un .htaccess dans le dossier du script, comme j'y connais pas grand chose, j'ai trouver ce htaccess

qui me rend don possible d'éviter le time-out a 30 secondes (bien que j'ai pas gagner grand chose...).

php_flag allow_call_time_pass_reference on 
php_value max_input_time 3600
php_value max_execution_time 0
php_value memory_limit 10M
php_value post_max_size 10M
php_value upload_max_filesize 10M

 

 

Le hic c'est que le player et les images du module n'apparaisse plus dans le script...

quand je supprime le htaccess tout redevient normal...

 

Je pense qu'il faut rajouter quelques choses, oui mais quoi, ça je ne sais pas.

 

Merci a ceux qui sauront m'aider.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...