我想下载文件使用的帮助下flutter Dio
的网址。
final imgUrl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
var dio = Dio();
RaisedButton.icon(
onPressed: (){
download2(dio, imgUrl, "./example/boo2.pdf");
},
icon: Icon(Icons.file_download,color: Colors.white,),
color: Colors.green,
textColor: Colors.white,
label: Text('Dowload Invoice')
)
Future download2(Dio dio, String url, String savePath) async {
try {
Response response = await dio.get(
url,
onReceiveProgress: showDownloadProgress,
//Received data with List<int>
options: Options(
responseType: ResponseType.bytes,
followRedirects: false,
validateStatus: (status) { return status < 500; }
),
);
print(response.headers);
File file = File(savePath);
var raf = file.openSync(mode: FileMode.write);
// response.data is List<int> type
raf.writeFromSync(response.data);
await raf.close();
} catch (e) {
print(e);
}
}
void showDownloadProgress(received, total) {
if (total != -1) {
print((received / total * 100).toStringAsFixed(0) + "%");
}
}
我得到这个错误。
操作系统错误:权限被拒绝,错误号= 13flutter
3条答案
按热度按时间eimct9ow1#
你可以复制粘贴下面运行完整的代码
您需要使用https://pub.dev/packages/path_provider来获取临时目录
代码片段
字符集
工作演示
100d1x
的字符串
完整代码
型
k4aesqcs2#
您必须添加权限。
对于Android:在AndroidManifest.xml
字符集
pubspec.yaml
ext_storage:^1.0.3
your.dart
型
chhkpiq43#
我无法将PDF保存到此路径
字符集
最后能够保存文件到
/storage/emulated/0/Download/
使用下面的方法来检查是否download
或downloads
路径存在和优先级:型
你的
Future<void> download2()
方法没有问题。我也没有使用这个权限:
型
因为从android 10开始,存储权限标记为deprecated permission_handler,并使用MANAGE_EXTERNAL_handler代替。
型
注意事项:
Flutter稳定:3.16.3
dio:^5.4.0
permission_handler:^11.1.0