由于小程序文件系列 API 的需要,以及安全方面的原因,PC 千牛小程序容器建立了一套虚拟路径体系。但开发者经常会直观地想要操作真实物理路径,因而引发了很多困惑。现将这套虚拟路径和体系详细介绍一下,以及给开发者一些处理本地文件的建议。
我们所说的虚拟路径地址主要是指如下几类“URL”:
URL(虚拟路径) |
说明 |
用途 |
https://appres.wiflill.com/publictmp/... |
公共临时文件(不隔离) |
临时存放 |
https://appres.wiflill.com/file/... |
私有文件路径(每小程序隔离) |
被永久保存的文件 |
https://appres.wiflill.com/img/... |
私有图片路径(每小程序隔离) |
被永久保存的图片 |
https://appres.wiflill.com/plugin/file/... |
插件文件路径(每小程序、每插件隔离) |
被永久保存的文件,用于插件 |
https://appres.wiflill.com/plugin/img/... |
插件图片路径(每小程序、每插件隔离) |
被永久保存的图片,用于插件 |
为描述方便,下文指代这几类虚拟路径类型的时候,分别用“<tmp>”、“<file>”、“<img>”、“<plugin/file>”、“<plugin/img>”来描述。在不需要特意区分“<file>”和“<plugin/file>”的场景统一用“<file>”,在不需要特意区分“<img>”和“<plugin/img>”的场景统一用“<img>”。用“<any>”指代所有类型虚拟路径。
以上信息只是为了更好的理解而向开发者说明,平台并不保证未来维持一直这种模式不变。开发者不要去识别虚拟路径中的 publictmp、file、img 等名称,以免未来业务受影响。域名“appres.wiflill.com”在一定程度上是稳定的,但也请只在特别必要的情况下去识别此域名。
名称 |
功能 |
主要入参 | 主要出参 |
文件流向 |
获取文件信息 |
apFilePath |
文件大小及其他 |
读取 <any> |
|
保存文件到本地 |
URL 或 apFilePath |
新的 apFilePath |
网络 => <tmp> 或 <tmp> => <file> |
|
获取保存的文件信息 |
apFilePath |
文件大小及其他 |
读取 <file> |
|
获取保存的所有文件信息 |
/ |
apFilePath 列表 |
枚举 <file> |
|
删除某个保存的文件 |
apFilePath |
/ |
删除 <file> |
名称 |
功能 |
主要入参 | 主要出参 |
文件流向 |
my.chooseImage | 选择图片 |
/ |
apFilePath | 本地 => <img> |
保存图片 |
URL |
新的 apFilePath |
网络 => <img> |
|
获取图片信息 |
URL 或 apFilePath |
apFilePath |
网络 => <tmp> 读取 <img> 类型虚拟路径 |
名称 |
功能 |
主要入参 | 主要出参 |
文件流向 |
上传文件 |
apFilePath | / |
<any> =>网络 |
|
下载文件 |
URL |
apFilePath |
网络 => <tmp> |
API 名称 |
功能说明 |
主要入参 | 主要出参 |
文件流向 |
my.qn.chooseFile | 选择文件 | / |
apFilePath | 本地 => <tmp> |
保存文件到磁盘 |
apFilePath | / |
<any> => 本地 |
在整个 PC 千牛小程序体系,由于安全方面的原因,本地路径被设计成不向开发者透出,只可能被用户感知。以 my.qn.chooseFile 和 my.qn.saveFileToDisk 为例,前者会使用系统的“打开文件对话框”让用户从本地路径选择文件,然后生成虚拟路径;后者会使用系统的“保存文件对话框”,将虚拟路径对应的文件生成到用户指定的本地路径。开发者如果遇到需要感知本地路径的场景,请从产品、业务角度做适当的调整,来适配千牛的安全要求。
如有进一步问题,请联系技术支持。