将文件下载到 Flutter 中的设备下载文件夹
Download file to Device download folder in Flutter
我正在尝试使用必须为其指定“savePath”的 dio 插件在我的 flutter 应用程序中下载文件。但是使用 path_provider 我只能看到 ApplicationDocumentsDirectory、ExternalStorageDirectory 等。我的想法是简单地在设备的下载文件夹中显示文件 (pdf),所以每当用户想要查看文件时,他只需转到该文件夹并点击它。
保存到 ApplicationDocumentsDirectory(据我所知)需要我为应用程序中的文件提供 link(某种),这意味着用户每次想要查看通过我下载的文件时都必须打开我的应用程序应用
我只希望文件在下载文件夹中可用,就像我们直接下载到下载文件夹中的许多文件一样。
我是不是漏掉了什么?请赐教!
根据评论中用户的要求添加了此代码:
var dir;
Future < dynamic > downloadFile(url, filename) async {
Dio dio = Dio();
try {
// checkPermission();
//if(Externa)
dir = await getApplicationDocumentsDirectory();
if (dir.path != null)
print("url:$url");
print("path:${dir.path}/$filename");
if (await File("${dir.path}/$filename").exists()) {
setState(() {
filePath = "${dir.path}/$filename";
});
return;
}
await dio.download(url, "${dir.path}/$filename",
onReceiveProgress: (rec, total) {
print("Rec: $rec , Total: $total");
setState(() {
downloading = true;
progressString = ((rec / total) * 100).toStringAsFixed(0) + "%";
});
});
} catch (e) {
print("downloadErr:$e");
}
setState(() {
downloading = false;
progressString = "Concluido";
filePath = "${dir.path}/$filename";
});
}
你可以使用downloads_path_provider
https://pub.dev/packages/downloads_path_provider
import 'package:downloads_path_provider/downloads_path_provider.dart';
Future<Directory> downloadsDirectory = DownloadsPathProvider.downloadsDirectory;
我正在尝试使用必须为其指定“savePath”的 dio 插件在我的 flutter 应用程序中下载文件。但是使用 path_provider 我只能看到 ApplicationDocumentsDirectory、ExternalStorageDirectory 等。我的想法是简单地在设备的下载文件夹中显示文件 (pdf),所以每当用户想要查看文件时,他只需转到该文件夹并点击它。 保存到 ApplicationDocumentsDirectory(据我所知)需要我为应用程序中的文件提供 link(某种),这意味着用户每次想要查看通过我下载的文件时都必须打开我的应用程序应用
我只希望文件在下载文件夹中可用,就像我们直接下载到下载文件夹中的许多文件一样。
我是不是漏掉了什么?请赐教!
根据评论中用户的要求添加了此代码:
var dir;
Future < dynamic > downloadFile(url, filename) async {
Dio dio = Dio();
try {
// checkPermission();
//if(Externa)
dir = await getApplicationDocumentsDirectory();
if (dir.path != null)
print("url:$url");
print("path:${dir.path}/$filename");
if (await File("${dir.path}/$filename").exists()) {
setState(() {
filePath = "${dir.path}/$filename";
});
return;
}
await dio.download(url, "${dir.path}/$filename",
onReceiveProgress: (rec, total) {
print("Rec: $rec , Total: $total");
setState(() {
downloading = true;
progressString = ((rec / total) * 100).toStringAsFixed(0) + "%";
});
});
} catch (e) {
print("downloadErr:$e");
}
setState(() {
downloading = false;
progressString = "Concluido";
filePath = "${dir.path}/$filename";
});
}
你可以使用downloads_path_provider
https://pub.dev/packages/downloads_path_provider
import 'package:downloads_path_provider/downloads_path_provider.dart';
Future<Directory> downloadsDirectory = DownloadsPathProvider.downloadsDirectory;