Forums Développement Multimédia

Aller au contenu

Téléchargement fichier avec progressbar

Director

11 réponses à ce sujet

#1 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 06 September 2010 - 16:44 PM

Bonjour à tous!

je travail sur un projet d'installeur avec director 11.5.

le principe est de télécharger un fichier sur un serveur http et de le copier sur le disque dur.

Mon problème est que la barre de progression s'arrete a 33% etle téléchargement recomence.

pour l'application autonome, j'utilise NetLingo, Buddy web(comme buddy API mais pour le web).

dans mon code d'animation jai:


on prepareMovie
  sprite(2).width = 0
  tellStreamStatus(TRUE)
  member("pourcentage").text = ""
end

on streamStatus url, etat, octetsTransmis, bytes_total, erreur
  bytes_total = bwFileSize("http://www.seveur.com/maj/fichier.zip",[])

  if octetsTransmis = bytes_total then
    go to frame 2
  else
    getPercent = octetsTransmis / bytes_total
    sprite(2).width = getPercent*200
    member("pourcentage").text = integer(getPercent * 100) & "%"
    updateStage
  end if
end
on chargement
 objNetLingo = new xtra("netlingo")
 objNetLingo = downloadNetThing ("http://www.seveur.com/maj/fichier.zip","c:\repertoire\fichier.zip")
end
 

j'utilise la fonction:bytes_total = bwFileSize de buddy web car je ne connais pas d'autre xtra capable de retourner la taille du fichier à télécharger vue que la fonction on streamStatus URL, state, bytesSoFar, bytesTotal, error de NetLingo me renvoie la valeur 0 pour bytesTotal.

mon script d'image:


on exitFrame me
  chargement()
end
 


Auriez vous un peut de votre temps précieux à m'accorder?
je joins la source
Merci à vous
PMK

#2 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 06 September 2010 - 18:30 PM

Normalement, bytestotal marche bien. Mais ça peut venir du serveur d'en face qui renvoie de mauvaises infos. Si tu peux, essaye sur un autre serveur.
Ca pourrait venir aussi de cette ligne :

bytes_total = bwFileSize("http://www.seveur.com/maj/fichier.zip",[])

En effet, comme tu la mets dans la fonction streamstatus, elle est exécutée à chaque appel à cette fonction. Tu n'arrêtes donc pas de faire un appel au serveur. Met là ailleurs juste avant de lancer le chargement et stocke la valeur dans une variable de propriété/globale.

PS :
inutile d'initialiser l'xtra netlingo, les fonctions sont directement accessibles
objNetLingo = new xtra("netlingo") <--inutile (d'ailleurs vu la ligne suivante, tu annules objNetLingo en lui affectant une autre valeur)

#3 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 06 September 2010 - 19:05 PM

Merci pour cette réponse rapide je vais tester.....

#4 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 07 September 2010 - 14:34 PM

J'ai essayé ta solution bubarnet hélas sans résultat.
Le chargement se fait, l'animation passe directement à chargement complet mais dans la bibliothèque, on voit le poucetage continuer à grimper :shock:
par contre tu as raison pour le serveur la variable bytes_total est = à 0.
Donc forcement pas de calcul..

Malheureusement, sur la doc en ligne pas d'info sur la solution pour résoudre le problème.

normalement , il faudrait changer le type mime sur le serveur.connais tu la procédure?
Ou plus simple (peut-être) quel serveur dois je installer qui fonctionnera avec On StramStatus.

la je nage...

merci pour votre temps :Hola:

#5 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 07 September 2010 - 14:38 PM

Aucune idée pour changer le type mime. De plus ça doit pas mal dépendre du fournisseur.

Pour l'avoir testé, ça marche sur les serveurs free et ovh

#6 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 07 September 2010 - 17:48 PM

Quand tu dis free, tu parles d'un compte genre page perso?
si oui je dos avoir un probleme dans mon code car j'ai essayé avec mon compte free et même résultat.

Aurais tu un exemple de code pour comparer avec le mien stp! :Hola:

merci par avance

#7 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 08 September 2010 - 10:46 AM

Oui, je parle bien d'un compte perso chez free.fr

Sinon je vais avoir du mal à te fournir un exemple, car j'utilise un objet assez complexe qui se charge de ça et qui fait partie d'un tout.
De plus je m'aperçois que j'utilise getstreamstatus et non pas la fonction streamstatus (en théorie, il n'y a pas de différence entre les deux, si ce n'est dans l'utilisation)

Ca demande de changer un peu ton code

Lingo


--frame 1
global pID

on enterframe
pID=downloadNetThing("http://www.seveur.com/maj/fichier.zip","c:\repertoire\fichier.zip")
end

--frame 2
global pID

on enterframe
lResultDownload=getstreamstatus(pID)
case lResultDownload.state of
"inprogress":
--lResultDownload contient 2 propriétés : #bytesSoFar et #bytesTotal pour ton calcul
--ton code
go to the frame
"complete":
--dl terminé
"error":
--en cas d'erreur
end case
end

Après, la doc indique bien que bytesTotal peut renvoyer 0 si le type mime ne renvoie pas la taille. Les fichiers zip sont-ils mal renseignés chez free ? Si ça ne marche toujours pas, essaye avec d'autres types de fichiers (jpg, mp3, ...) pour tester.

Tu peux également essayer avec preloadnetthing au lieu de downloadNetThing

#8 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 08 September 2010 - 13:08 PM

Bon pour le coup cela fonctionne mais pas de barre de progression.
je suppose que je ne récupère pas les propriété de la bonne façon(enfin c'est sur)

pourcentageActuel = (float(lResultDownload.bytesSoFar) / float(lResultDownload.bytesTotal))

une petite explication peut être pour abuser encore un peut...

#9 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 08 September 2010 - 13:16 PM

Avant tout, que te retourne lResultDownload.bytesSoFar et lResultDownload.bytesTotal à chaque frame ?

Si ça te renvoie les bonnes valeurs, alors le problème de barre de progression vient d'ailleurs.

#10 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 08 September 2010 - 13:32 PM

je ne sais pas se que retourne les valeur car lorsque je tappe la commande put lResultDownload.bytesSoFar dans la fentre de message,
je n'ai pas la main.
on dirait que l'animation
1)charge le fichier
2)quand le fichier est chargé passe aussitôt a complet

le fichier est bien présent sur le disque et il est valide

ci joint mon animation

#11 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 08 September 2010 - 13:57 PM

je viens de vérifier mon code et je n'avais oublier updateStage().
mais il y a quelque chose de bizarre car j'ai renseigner un fichier fictif et il ne me donne aucune erreur et va direct à complet.

#12 PMK

    Ceinture Blanche

  • Members
  • Pip
  • 9 messages

Posté 08 September 2010 - 14:20 PM

je viens de tester en la valeur des propriété:

put pID = 22
put lResultDownload.state = Complete
put lResultDownload.bytesSoFar = 4349453
put lResultDownload.bytesTotal = 4349453
put lResultDownload.error = ok

donc théoriquement lResultDownload renvoie bien les bonnes données

donc je ne comprend pas le blocage et pourquoi il ne passe pas par la barre de progression.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP