如何从 URL 获取文件大小(在 Flutter 中)?我可以通过使用来获取它:
http.Response response = await http.get(url);
print(response.contentLength);
但这会下载整个文件。是否可以在不完全下载的情况下获取文件大小?谢谢
找到答案:HEAD Request。
http.Response r = await http.head(url);
r.headers["content-length"]
注意:直接
r.contentLength;
是不行的。
在下载文件之前,我尝试了上面接受的 firebase storage 文件下载大小的答案。但我看到 http.head 不包含 content-length。所以我尝试了 http.get 方法,我看到 content-length 包含在标头中。所以 我认为这应该是正确的答案。
http.Response r = await http.get(url);
final file_size = r.headers["content-length"];
带有后缀的完整函数可能会有用
// import 'package:http/http.dart' as http;
linkSize(String url) async{
try{
String? fileSize = "";
http.Response response = await http.head(Uri.parse(url));
fileSize = response.headers["content-length"];
int bytes = int.parse(fileSize!);
if (bytes <= 0) {
fileSize = "0 B";
}
const suffixes = ["B", "KB", "MG", "GB", "TB", "PB", "EB", "ZB", "YB"];
var i = (log(bytes) / log(1024)).floor();
fileSize = '${(bytes / pow(1024, i)).toStringAsFixed(0)} ${suffixes[i]}';
}catch(err){
}
}