我们可以使用dart
下载文件吗?
例如在python
中答案 0 :(得分:13)
我经常使用HTTP包。如果要下载不大的文件,可以使用HTTP包进行更简洁的方法:
import 'package:http/http.dart' as http;
main() {
http.get(url).then((response) {
new File(path).writeAsBytes(response.bodyBytes);
});
}
亚历山大写的内容对大文件的效果会更好。如果您发现需要经常下载文件,请考虑为此编写辅助函数。
答案 1 :(得分:11)
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()));
}
答案 2 :(得分:2)
在问题中链接的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();
});
});
});
}
答案 3 :(得分:0)
我们可以使用http.readBytes(url)。
await File(path).writeAsBytes(await http.readBytes('https://picsum.photos/200/300/?random'));