Télécharger des fichiers
Tchouboudou
Membre
Bonsoir tout le monde...
Le téléchargement de fichier m'interresse, et j'ai cherché sur ce forum. J'ai trouvé quelques sujet, mais je n'ai pas comprs grand chose. Pouvez-vous m'expliquez comment faire (juste un téléchargement simple).
Merci d'avance,
Tchouboudou
Le téléchargement de fichier m'interresse, et j'ai cherché sur ce forum. J'ai trouvé quelques sujet, mais je n'ai pas comprs grand chose. Pouvez-vous m'expliquez comment faire (juste un téléchargement simple).
Merci d'avance,
Tchouboudou
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais comme tu ne précises pas grand chose (qu'est ce qui est téléchargé, quel protocole, quelle utilisation), je te donnerai la méthode générique le plus simple :
Dans l'exemple, la ressource est un fichier .png qui contient le logo Objective-cocoa.
.
Merci de ta réponse.
C'est le squelète d'une classe nommée "Telechargeur".
La méthode telecharger entame la session de téléchargement (création d'une url, puis d'une requête de lecture de l'url, et enfin établissement d'une connexion).
La connexion est asynchrone (les données sont reçues en tâche de fond).
Des méthodes delegate sont appelées pour suivre le téléchargement.
J'en utilise 3 : la première pour débuter la session de téléchargement (création du NSData, récupération de la taille de la ressource à télécharger), la seconde pour accumuler les données reçues dans le NSData et pour afficher le pourcentage de progression, et la dernière pour enregistrer toutes les données reçues sur le disque.
La parole est à Tchouboudou.
.
Là je pense que bru t'as donné suffisamment d'informations donc je ne vais pas te faire d'exemple même si ça m'aurait amusé.
Après si tu veux savoir comment incrémenter un NSProgressIndicator en fonction du téléchargement, savoir le débit, etc..., n'hésites pas
Je vois, je vois... L'élève a dépassé ses (anciens) (maà®tres) !
[size=7pt]
PS : je préfère utiliser NSURLConnection plutôt que NSURLDownload... D'après la doc Apple, NSURLConnection semble plus "évolué", ou de plus haut niveau (prise en compte du cache et des redirections)...
[/size]
.
J'ai une question, un simple tableau contenant des instances de la classe Telechargeur (pour reprendre l'exemple de Bru) ne suffirait-il pas à faire plusieurs téléchargement ?
Je pense que oui... Mais c'est à tester.
Par contre, cela demandera une gestion sérieuse des états d'avancement des téléchargements (via un NSProgressIndicator par exemple).
Le jeune padawan Louka (Eaglelouk) de donnera toutes les pistes possibles.
Au fait, les téléchargements, c'est pour quoi ?
Parce que si tu nous refais un énième gestionnaire FTP, on a ce qu'il faut (d'autant plus que Le Chat Noir nous en concocte un de derrière les fagots).
.
Aussi, pourquoi un long long comme type de variable ?
Pour ce qui est de faire un NSProgressIndicator à chaque ligne d'une TableView, c'est un peu plus complexe, mais la solution la plus simple est de créer un nouveau fichier interface (Nib) et d'y ajouter une NSView, et là tu présentes comme tu veux sachant que ça sera la ligne de référence de ta tableView.
Mais initialisé une nouvelle classe pour chaque téléchargement, ça peut être plus simple, car moi à chaque vois que je reçois - (void)download:(NSURLDownload *)download didReceiveDataOfLength:(unsigned)length{}, je met un petit while afin de récupérer le NSMutableDictionary qui correspond au NSURLDownload (et ça surcharge un peu)
EDIT : En fait, c'est bon, j'ai juste inverser des variables.
# code de Bru :
Le long long, abréviation de signed long long int, est un entier de 64 bits (8 octets).
Le prototype de la méthode expectedContentLength de NSURLResponse renvoie un long long, c'est dans la la doc.
Cela autorise (en théorie) le téléchargement de ressources de taille supérieure à 4 go.
.
En résumé :
- le "char" est sur un unique octet (8 bits)
- le "short" est sur 2 octets (16 bits)
- le "long" est sur 4 octets (32 bits)
- le "long long" est sur 8 octets (64 bits)
Et le int (sans autre précisions)... ben c'était justement tout l'objet du débat, à savoir si ça correspondait à un long sur toutes les machines, ou selon si on était sur une machine 32 bits ou 64 bits.
short, long et long long sous-entendent le "int" derrière (c'est à dire que tu peux indifférament écrire "short" ou "short int", de même pour "long" ou "long int", etc. Mais quand tu ne précises rien de plus que "int", en général ça dépend du compilateur, moi je dirais que le "int" est souvent équivalent à un "long int" c'est à dire sur 32 bits, mais certains disent que "int" prend la taille du bus de données, soit 32 bits sur les machines 32 bits, 64 bits sur les machines 64 bits... Pour moi c'est aux bonnes graces du compilo.
Voilà , donc pour en revenir aux "long long", un "long long" permet de stocker des nombres 2x plus grands qu'un long normal, c'est tout :P
[EDIT]Zut j'avais pas vu qu'il y avait une 2e page :P Avec déjà la réponse de Bru
Je dirais plutôt 4294967296 fois plus grands, mais bon, les goûts et les couleurs, ça ne discute pas.
Au temps pour moi
Oui, bien sûr, la taille en octets es multipliée par 2, donc le nombre le plus grand stockable dedans est élevé au carré, de 2^32 possibilités on passe à 2^64.
Mais bon si tu veux jouer à ça, c'est pas forcément 4294967296 (2^32) fois plus grand, mais (2^32+1) fois (4294967297x), puisqu'on passe de 2^32-1 à 2^64-1 = (2^32-1)*(2^32+1)...
Sans parler de quand ils sont unsigned et donc que le bit de poids fort sert pour indiquer le signe, et que le nombre de possibilités est donc divisé par 2... :P
(Si c'est pas ça qu'on appelle du pinaillage... :P)
J'en demandais pas tant
Aà¯e... Eagle, tu es en terrain miné.
Je laisse Ali t'achever !
.
Pourquoi je sens que ça va se finir par un lien vers le sitede l'académie fraçaise ?
Ali espèce de militaire
Sinon on peut finir en match nul la dessus :
Bah honnêtement j'en sais trop rien, on en avait longuement causé sur macfr, il en était ressorti qu'apparament "au temps pour moi" était l'expression d'origine, née dans un contexte militaire, et que ça a dévié en "autant pour moi" qui finalement est passé dans le langage courant...
Mais je suis pas prof de français, alors bon :P
On relance le débat ?
Excellent :P
Bon je demanderai à ma prof de français. Ho remarque, j'ai ma journée d'appel de préparation à la défense Lundi, autant demander là bas, mais ils vont sûrement me dire "Au temps pour moi". <br />
Bon ne dérivons pas trop non plus (j'avous je l'ai cherché )