Использование dart для загрузки файла

можем ли мы использовать dart скачать файл?

например python

4 ответов


Shailen это правильно и может быть даже немного короче с поток.труба!--3-->.

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()));
}

Я использую адресу http много. Если вы хотите загрузить файл, который не огромен, вы можете использовать пакет HTTP для более чистого подхода:

import 'package:http/http.dart' as http;

main() {
  http.get(url).then((response) {
    new File(path).writeAsBytes(response.bodyBytes);
  });
}

то, что написал Александр, будет лучше работать для больших файлов. Подумайте о написании вспомогательной функции для этого, если вам часто нужно загружать файлы.


пример python, связанный с вопросом, включает запрос содержимого example.com и запись ответа в файл.

вот как вы можете сделать что-то подобное в Dart:

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.readBytes(URL-адрес).

ждем файл(путь).writeAsBytes (ожидание http.readBytes('https://picsum.фото/200/300/?random'));