pouvons-nous utiliser Par exemple dans Python p> dart code> pour télécharger un fichier? p>
4 Réponses :
L'exemple Python lié à la question implique de demander le contenu de Voici comment vous pouvez faire quelque chose de similaire dans DART: P> exemple.com code> et d'écrire la réponse à un fichier.
import 'dart:io';
main() {
var url = Uri.parse('http://example.com');
var httpClient = new HttpClient();
httpClient.getUrl(url)
.then((HttpClientRequest request) {
return request.close();
})
.then((HttpClientResponse response) {
response.transform(new StringDecoder()).toList().then((data) {
var body = data.join('');
print(body);
var file = new File('foo.txt');
file.writeAsString(body).then((_) {
httpClient.close();
});
});
});
}
Ok, donc c'est faisable, mais que diriez-vous si le contenu est une image? Merci.
Est-ce que l'API DART ne peut pas être plus courte? Nouveau httpClient () code> =>
getURL () code> =>
fermeture () code> =>
transformé () code> => < Code> Nouveau StringDecoder () Code> =>
Tolist () Code> =>
Fermer () Code>. Et ceci est sans prendre en compte les 4 appels
alors () code>.
Veuillez noter que la classe stringdecoder code> a été remplacée par
utf8.decoder code> dans les versions récentes de Dart.
La réponse de Shailen est correcte et peut même être un peu plus courte avec Stream.pipe .
import 'dart:io'; main() async { final request = await HttpClient().getUrl(Uri.parse('http://example.com')); final response = await request.close(); response.pipe(File('foo.txt').openWrite()); }
Faire cela dans A pour boucle commencerait tous les téléchargements en parallèle. Comment sérialiser cela?
J'utilise le package http beaucoup. Si vous souhaitez télécharger un fichier qui n'est pas énorme, vous pouvez utiliser le package HTTP pour une approche de nettoyage: Qu'est-ce que Alexandre a écrit fonctionnera mieux pour les fichiers plus importants. Envisagez d'écrire une fonction d'assistance pour cela si vous trouvez le besoin de télécharger des fichiers souvent. P> p>
Faire cela dans A pour boucle commencerait tous les téléchargements en parallèle. Comment sérialiser cela?
@Phanirithvij Vous alliez simplement ajouter un autre .Chen code> à la fin. C'est beaucoup plus propre si vous utilisez attendre à la place.
Nous pouvons utiliser http.readbytes (URL). P>
Await le fichier (chemin) .wreeEsbytes (attendre http.readbytes (' https: // picsum. Photos / 200/300 /? aléatoire ')); p>