uni-app html5plus API无法存储任意类型文件到外部公共路径下
uni-app html5plus API无法存储任意类型文件到外部公共路径下
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | WIN11 | HBuilderX |
操作步骤:
- 官网帖子 https://ask.dcloud.net.cn/article/36199 对 Android 文件系统理解有误。
- 在Android 11+系统中,仍然支持外部公共路径(例如/storage/emulated/0/Download)下的任意类型文件存储,只不过需要新的权限MANAGE_EXTERNAL_STORAGE。标准基座缺少这一权限。
- WebApp必然需要存储各种类型的文件到外部公共路径,希望 html5plus 尽快根据 Android 11+ 标准,改进API,实现这一功能。
预期结果:
- 官网帖子 https://ask.dcloud.net.cn/article/36199 对 Android 文件系统理解有误。
- 在Android 11+系统中,仍然支持外部公共路径(例如/storage/emulated/0/Download)下的任意类型文件存储,只不过需要新的权限MANAGE_EXTERNAL_STORAGE。标准基座缺少这一权限。
- WebApp必然需要存储各种类型的文件到外部公共路径,希望 html5plus 尽快根据 Android 11+ 标准,改进API,实现这一功能。
实际结果:
- 官网帖子 https://ask.dcloud.net.cn/article/36199 对 Android 文件系统理解有误。
- 在Android 11+系统中,仍然支持外部公共路径(例如/storage/emulated/0/Download)下的任意类型文件存储,只不过需要新的权限MANAGE_EXTERNAL_STORAGE。标准基座缺少这一权限。
- WebApp必然需要存储各种类型的文件到外部公共路径,希望 html5plus 尽快根据 Android 11+ 标准,改进API,实现这一功能。
bug描述:
- 官网帖子 https://ask.dcloud.net.cn/article/36199 对 Android 文件系统理解有误。
- 在Android 11+系统中,仍然支持外部公共路径(例如/storage/emulated/0/Download)下的任意类型文件存储,只不过需要新的权限MANAGE_EXTERNAL_STORAGE。标准基座缺少这一权限。
- WebApp 必然需要存储各种类型的文件到外部公共路径,希望 html5plus 尽快根据 Android 11+ 标准,改进API,实现这一功能。
更多关于uni-app html5plus API无法存储任意类型文件到外部公共路径下的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app html5plus API无法存储任意类型文件到外部公共路径下的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 UniApp 中使用 HTML5+ API 时,确实存在一些限制,尤其是在存储文件到外部公共路径时。HTML5+ API 提供了 plus.io 模块来处理文件系统操作,但默认情况下,它不允许直接将任意类型的文件存储到外部公共路径(如 SD 卡或外部存储)中,主要是出于安全性和权限的考虑。
解决方案
-
使用
plus.io的requestFileSystem方法: 你可以使用plus.io.requestFileSystem方法来请求文件系统,然后通过plus.io.resolveLocalFileSystemURL来获取文件系统的根目录。之后,你可以将文件写入到指定的路径。plus.io.requestFileSystem(plus.io.PUBLIC_EXTERNAL, function(fs) { fs.root.getFile('example.txt', { create: true }, function(fileEntry) { fileEntry.createWriter(function(writer) { writer.write('Hello, World!'); }, function(error) { console.error('Failed to write file: ' + error.message); }); }, function(error) { console.error('Failed to get file: ' + error.message); }); }, function(error) { console.error('Failed to request file system: ' + error.message); }); -
使用
plus.downloader下载文件到外部存储: 如果你需要从网络下载文件并存储到外部存储,可以使用plus.downloader模块。var downloadTask = plus.downloader.createDownload('https://example.com/file.zip', { filename: '_downloads/file.zip' // 存储路径 }, function(download, status) { if (status == 200) { console.log('Download success: ' + download.filename); } else { console.error('Download failed: ' + status); } }); downloadTask.start(); -
使用
plus.gallery保存文件到相册: 如果你需要将文件保存到相册(如图片或视频),可以使用plus.gallery模块。plus.gallery.save('https://example.com/image.jpg', function() { console.log('Image saved to gallery'); }, function(error) { console.error('Failed to save image: ' + error.message); }); -
申请存储权限: 在 Android 平台上,你可能需要申请
WRITE_EXTERNAL_STORAGE权限才能将文件写入外部存储。你可以在manifest.json中配置权限:{ "permissions": { "android": [ "android.permission.WRITE_EXTERNAL_STORAGE" ] } }并在运行时动态申请权限:
plus.android.requestPermissions(['android.permission.WRITE_EXTERNAL_STORAGE'], function(result) { if (result.deniedPermissions.length > 0) { console.error('Permission denied'); } else { console.log('Permission granted'); } }, function(error) { console.error('Failed to request permissions: ' + error.message); });

