为什么电容器将所有内容保存到 IndexedDB 而不是 Android 上的 sd 卡?
Why is capacitor saving everything to IndexedDB instead on sdcard on Android?
我正在将 Angular 9 与 ionic5 一起使用,我正试图在我的 Android 9 设备上保存一个文件。不幸的是,每次我尝试使用 Capacitor 写入文件时,文件都会保存到 IndexedDB 而不是 disc/sdcard。有什么方法可以告诉 ionic 我想保存到 sdcard and/or 修复我的代码?
保存文件的代码
const fileName = decodeURIComponent(attachment.Name);
const savedFile = await Filesystem.writeFile({
path: fileName, // filename.png
data: attachment.Content, // base64 encoded png file
directory: FilesystemDirectory.ExternalStorage,
});
console.log(savedFile.uri);
权限
应用程序应具有写入 SD 卡的权限,因为这是在 AndroidManifest.xml
:
中定义的
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
预期结果
根据documentation,这应该将文件保存到sdcard的根目录。
实际结果
执行此操作时,返回的 URI 为 /EXTERNAL_STORAGE/filename.png
,但该文件不存在于 sdcard 上,因为它保存在 IndexedDB 中,如 Chrome Inspector 所附的屏幕截图所示我的 Android 上的应用程序 运行:
在我写完这个问题后,Whosebug 能够找到一个similar one,但没有解决,但回答了我的问题。
解决方案是确保您使用 Plugins
而不是 import
:
正确
const { Filesystem } = Plugins;
不正确
import { Filesystem } from '@capacitor/core';
我正在将 Angular 9 与 ionic5 一起使用,我正试图在我的 Android 9 设备上保存一个文件。不幸的是,每次我尝试使用 Capacitor 写入文件时,文件都会保存到 IndexedDB 而不是 disc/sdcard。有什么方法可以告诉 ionic 我想保存到 sdcard and/or 修复我的代码?
保存文件的代码
const fileName = decodeURIComponent(attachment.Name);
const savedFile = await Filesystem.writeFile({
path: fileName, // filename.png
data: attachment.Content, // base64 encoded png file
directory: FilesystemDirectory.ExternalStorage,
});
console.log(savedFile.uri);
权限
应用程序应具有写入 SD 卡的权限,因为这是在 AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
预期结果
根据documentation,这应该将文件保存到sdcard的根目录。
实际结果
执行此操作时,返回的 URI 为 /EXTERNAL_STORAGE/filename.png
,但该文件不存在于 sdcard 上,因为它保存在 IndexedDB 中,如 Chrome Inspector 所附的屏幕截图所示我的 Android 上的应用程序 运行:
在我写完这个问题后,Whosebug 能够找到一个similar one,但没有解决,但回答了我的问题。
解决方案是确保您使用 Plugins
而不是 import
:
正确
const { Filesystem } = Plugins;
不正确
import { Filesystem } from '@capacitor/core';