我们可以dart
用来下载文件吗?
例如在python中
我经常使用HTTP包。如果你想下载一个不大的文件,你可以使用 HTTP 包来获得更简洁的方法:
import 'package:http/http.dart' as http;
main() {
http.get(url).then((response) {
new File(path).writeAsBytes(response.bodyBytes);
});
}
Alexandre 所写的内容对于较大的文件会表现得更好。如果您发现需要经常下载文件,请考虑为此编写一个辅助函数。
Shailen 的回答是正确的,甚至可以使用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());
}
问题中链接到的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)。
await File(path).writeAsBytes(await http.readBytes(' https://picsum.photos/200/300/?random '));
是的,首先您必须使用 http dart 库请求文件 url,例如:
响应 response = await get(Uri.parse(link));
之后,您的响应对象(响应)将在 self 中获取该文件,您可以简单地将响应字节写入文件,该文件将成为您下载的文件。当我像这样打开文件时:
文件文件 = File('image.jpg')
然后我们必须像这样向这个文件发送响应字节:
file.writeAsBytes(response.bodyBytes);
现在您已成功下载图像文件.. 恭喜。
另外,例如,让我向您展示一个下载图像文件的示例代码:
import 'dart:io';
import 'package:http/http.dart';
main(List<String> args) async {
var link =
"https://pps.whatsapp.net/v/t61.24694-
24/72779382_449683642563635_3243701117464346624_n.jpg?ccb=11-
4&oh=23e3bc2ce3f4940a70cb464494bbda76&oe=619B3B8C";
Response response = await get(Uri.parse(link));
File file = File('image.jpg');
file.writeAsBytes(response.bodyBytes);
}
看,这是代码,在终端视图的底部下载了一个名为 image.jpg 的文件是我们下载的图像。
这是我们下载的实际图像。