[résolu] comment savoir "quand" télécharger ?

mpepito13mpepito13 Membre
septembre 2011 modifié dans API AppKit #1
Bonjour tout le monde!

Comme indiqué dans le sujet du post, j'ai une question toute bête : comment savoir quand télécharger ?  :o

Je m'explique...

J'ai fait un navigateur très basique en une ou 2 lignes de code qui me permet de naviguer.
Evidemment il manque plein de truc (popup notamment) mais bon c'est juste histoire d'essayer.

Maintenant je souhaiterais pouvoir télécharger. J'ai testé les différentes classes NSURLConnection, NSURLDownload et tout ça.
J'arrive à  les utiliser mais je ne sais pas "quand" les utiliser !  B)
Comment faire la différence entre "charger une page html" et "télécharger un fichier pdf" par exemple ?
Est-ce qu'il faut analyser les entêtes HTTPs de chaque requêtes ?


J'espère avoir été assez clair :-)

Réponses

  • 07:38 modifié #2
    Est-ce une mauvaise blague?
  • mpepito13mpepito13 Membre
    07:38 modifié #3
    Je lis et je relis mon post mais non je ne vois rien de marrant donc je vois 2 possibilités:
    1. effectivement c'est une blague et elle n'est pas marrante du tout
    2. ce n'est pas une blague mais une question (apparemment très bête) mais qui n'a toujours pas de réponse

    Allez je vous aide : ce n'est pas la première possibilité... :)
  • 07:38 modifié #4
    NRULDownload n'existe pas sur iOS, et tu postes sur iOS, pourrais-tu donc spécifier la plateforme?
  • mpepito13mpepito13 Membre
    07:38 modifié #5
    J'ai posté dans la partie Frameworks communs (ne sachant pas si la solution se trouve dans NSURLDownload ou ailleurs) mais c'est vrai que j'aurais du préciser que je fais mes tests sous mac, pas iOS.
    Désolé!
  • tabliertablier Membre
    07:38 modifié #6
    NRULDownload n'existe pas sur iOS, et tu postes sur iOS, pourrais-tu donc spécifier la plateforme
    Ben non, là  ce n'est pas la section IOS, c'est la section commune! Oui, le mac existe encore! (enfin, peut-être!!)
  • 07:38 modifié #7
    Oh putain ouaip dsl :D, j'ai vu "iPhone / iPad" à  la racine :D
    Gros mea culpa donc.

    Il existait un exemple fourni par Apple à  l'époque, un mini navigateur pour Mac.. introuvable on dirait.
    A priori, aucune méthode déléguée ne te permet de savoir si le fichier est téléchargeable. C'est à  gérer toi même en analysant les entête effectivement. mais sur le coup j'ai p-e tort!
  • mpepito13mpepito13 Membre
    07:38 modifié #8
    C'est bon je m'en suis finalement sorti!!!  8--)

    Je me suis servi de la fonction decidePolicyForMIMEType du WebPolicyDelegate pour déterminer le type de fichier récupérer.
    Je télécharge donc tout ce qui n'est pas du HTML. C'est basique mais ça marche :-)

    Ci-dessous mon code.
    Je vais essayer de rediriger le téléchargement dans le dossier Download et de faire "sauter" le dossier maintenant :-)

    - (void)webView:(WebView *)webView decidePolicyForMIMEType:(NSString *)type request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id &lt; WebPolicyDecisionListener &gt;)listener<br />{<br />	NSLog(@&quot;decide policy for mime type : %@&quot;, type);<br /><br />	// si c&#039;est une page de type html, on ne fait rien<br />	if ([type isEqualToString: @&quot;text/html&quot;])<br />		return;<br />	<br />	// Sinon on télécharge<br />	theDownload = [[NSURLDownload alloc] initWithRequest:request delegate: self];<br />	[listener ignore];<br />}<br /><br />- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename<br />{<br />&nbsp; &nbsp; NSString *destinationFilename;<br />&nbsp; &nbsp; NSString *homeDirectory = NSHomeDirectory();<br />	<br />&nbsp; &nbsp; destinationFilename = [[homeDirectory stringByAppendingPathComponent:@&quot;Desktop&quot;]<br />						&nbsp;  stringByAppendingPathComponent:filename];<br />&nbsp; &nbsp; [download setDestination:destinationFilename allowOverwrite:NO];<br />}<br /><br />- (void)downloadDidFinish:(NSURLDownload *)download<br />{<br />	NSLog(@&quot;Downlad finished&quot;);<br />	[download release];<br />}<br />
    
  • tabliertablier Membre
    07:38 modifié #9
    Je suis retourné sous OSx 10.4 et Xcode 2.5. J'ai effectivement retrouvé un MiniBrowser dans les examples WebKit d'Apple. Si tu es intéréssé je te l'enverrai après l'avoir converti.
  • mpepito13mpepito13 Membre
    07:38 modifié #10
    ah oui ça peut toujours être utile!

    Merci :)
  • muqaddarmuqaddar Administrateur
    07:38 modifié #11
    Je déplace dans la section Mac.
  • tabliertablier Membre
    07:38 modifié #12
    Ci-joint l'exemple MiniBrowser d'apple. J'ai juste changé la page par défaut.
    Compiler avec GCC 4.2 et SDK 10.5 et ça marche directement.
  • mpepito13mpepito13 Membre
    07:38 modifié #13
    excellent merci  :D
Connectez-vous ou Inscrivez-vous pour répondre.