# 小程序文件管理
# 1. finfile路径转换为绝对路径
支持的app类型
小程序✅ 小游戏✅ H5应用✅
在有些场景下,我们拿到finfile的文件路径,无法获取到文件数据,这时可以用该方法转换为绝对路径。需要注意:finfile协议文件必须存在,如果不存在则返回null。
比如,在使用小程序的转发功能时,返回的图片路径是小程序文件路径,可以用该方法转换为绝对路径,然后获取到图片数据再去调起第三方分享。 再比如,自定义api里,可以传递小程序文件路径的参数,宿主app用该方法转换为绝对路径后,即可拿到文件数据。
主进程
/**
* 把finfile文件路径转换为绝对路径
* @param context
* @param appId
* @param filePath finfile文件路径
*/
fun getFinFileAbsolutePath(context: Context, appId: String, filePath: String): String?
# 调用示例
val appletTempPath = FinAppClient.appletApiManager.getFinFileAbsolutePath(this,"60964a900f0ca30001292da1","finfile://tmp_4d412db8426d8deede4be6eac5a82476.jpg")
子进程
/**
* 将finfile路径转换为绝对路径
*
* @param finFilePath 小程序协议路径
*/
fun getFinFileAbsolutePath(finFilePath: String) : String?
# 调用示例
val path = FinAppProcessClient.appletProcessApiManager.getFinFileAbsolutePath("finfile://tmp_4d412db8426d8deede4be6eac5a82476.jpg")
# 2. 生成finfile协议路径
支持的app类型
小程序✅ 小游戏✅ H5应用✅
小程序中的finfile协议路径有三种:finfile://tmp_ 、finfile://store_、finfile://usr/。tmp类型路径是保存在小程序运行目录下,下次冷启动小程序时会被清除;store路径会持久化保存,当删除小程序时才会删除;usr类型路径也会持久化保存,但是只可以自定义文件名以及保存目录。
该函数,可以传入文件名和要保存的路径类型,生成一个finfile协议路径,以供小程序中使用。但是文件不一定存在,要结合其他api,往对应文件内协议内容。
/**
* 根据路径类型生成FinFile协议格式的路径
* @param filePath 文件路径,当pathType为usr类型时,支持文件夹,比如/aaa/bbb.jpg
* @param pathType 路径类型, 这是一个枚举变量 usr, tmp, store
*/
fun generateFinFilePath(filePath: String, pathType: FinFilePathType): String?
# 调用示例
val appletTempPath = FinAppClient.appletApiManager.generateFinFilePath("bbc/bbab/test.jpg", FinFilePathType.USR)
# 3. finfile路径转换为绝对路径(文件可不存在)
支持的app类型
小程序✅ 小游戏✅ H5应用✅
在有些场景下,我们拿到finfile的文件路径,但此时路径下文件并不实际存在,希望转换为绝对路径后,将文件存进去使用。
比如,我们希望把图片保存在小程序的路径下,这时可以先调用API:generateFinFilePath,生成finfile路径,再调用此API生成绝对路径(如:生成finfile://usr/bbc/bbab/test.jpg的绝对路径,转换为绝对路径后前两级目录bbc/bbab/,此API将会自动生成) 。生成绝对路径后,可以把图片文件存到此路径下。
/**
* 把finfile文件路径转换为绝对路径
* @param context
* @param appId
* @param filePath finfile文件路径
*/
fun getFinFileAbsolutePathCanNoExist(context: Context, appId: String, filePath: String): String?
# 调用示例
val appletTempPath = FinAppClient.appletApiManager.getFinFileAbsolutePathCanNoExist(this,"60964a900f0ca30001292da1","finfile://usr/bbc/bbab/test.jpg")
# 4. 获取小程序临时文件存储目录的路径
支持的app类型
小程序✅ 小游戏✅ H5应用✅
# API
/**
* 获取小程序临时文件存储目录的路径
*
* @param context 上下文
* @param appId 小程序ID
* @return 小程序临时文件存储目录的路径
*/
fun getAppletTempPath(context: Context, appId: String): String?
# 调用示例
# 5. 获取小程序源码存储目录的路径
支持的app类型
小程序✅ 小游戏✅ H5应用✅
# API
/**
* 获取小程序源码存储目录的路径
*
* @param context 上下文
* @param appId 小程序ID
* @return 小程序源码存储目录的路径
*/
fun getAppletSourcePath(context: Context, appId: String): String?