Можем ли мы использовать dart
для загрузки файла?Использование dart для загрузки файла
Например, в python
Можем ли мы использовать dart
для загрузки файла?Использование dart для загрузки файла
Например, в python
Shailen's response правильно и может даже быть немного короче с Stream.pipe.
import 'dart:io';
main() {
new HttpClient().getUrl(Uri.parse('http://example.com'))
.then((HttpClientRequest request) => request.close())
.then((HttpClientResponse response) =>
response.pipe(new File('foo.txt').openWrite()));
}
Питон пример связан в вопросе включает запрос на содержимое example.com
и писать ответ в файл.
Вот как вы можете сделать что-то подобное в Дарта:
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();
});
});
});
}
Я пользуюсь пакетом HTTP. Если вы хотите скачать файл, не огромный, вы можете использовать пакет HTTP для более чистого подхода:
import 'package:http/http.dart' as http;
main() {
http.get(url).then((response) {
new File(path).writeAsBytes(response.bodyBytes);
});
}
Что написал Александр будет работать лучше для больших файлов. Подумайте о том, чтобы написать вспомогательную функцию для этого, если вам часто приходится скачивать файлы.
Хорошо, так что это возможно, но как насчет того, является ли контент образным? Спасибо. –
Является ли API Dart не короче? 'new HttpClient()' => 'getUrl()' => 'close()' => 'transform()' => 'new StringDecoder()' => 'toList()' => 'close()'. И это не учитывает 4 вызова 'then()'. – mezoni
Обратите внимание, что класс 'StringDecoder' был заменен на' UTF8.decoder' в последних версиях Dart. – lucperkins