我正在尝试下载文件并将其保存在 Downlaod 目录中,但每次都会出现此错误:
I/flutter (21400): FileSystemException: Cannot create file, path = '/storage/emulated/0/Download/contratto.jpg' (OS Error: File exists, errno = 17)
Run Code Online (Sandbox Code Playgroud)
但如果我在存储中搜索这个文件,我找不到它,我不明白。
在清单中我拥有所有权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
我正在使用 ext_storage 包来查找路径,但即使使用 path_provider 我也遇到了相同的错误。这是我的代码:
static Future download(String url, String fileName, String extension) async {
_checkPermission();
String _localPath = await ExtStorage.getExternalStoragePublicDirectory(
ExtStorage.DIRECTORY_DOWNLOADS);
Dio dio = Dio();
await dio.download(
url,
_localPath + "/" + fileName + "." + extension,
);
}
Run Code Online (Sandbox Code Playgroud)
我使用的是颤振2.0.6。有任何想法吗?
编辑:下载仅在我第一次保存具有特定名称的文件时有效,如果我删除它并尝试再次下载它,我会收到此错误。我也尝试过重新安装该应用程序,但仍然出现错误
显然,Android删除文件的方式似乎有问题:第一次可以工作,但下次比较错误,即使我手动删除文件。
我的解决方案:将随机字符串附加到文件名。我知道它不是那么优雅,但它确实有效。
String filePath =
_localPath + "/" + fileName + Uuid().v4() + "." + extension;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4468 次 |
| 最近记录: |