FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 小程序文件管理

# 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?
    

    # 调用示例

      © FinClip with ❤ , Since 2017