tt.saveFile
收藏
我的收藏

基础库 1.15.0 开始支持本方法,这是一个异步方法。

保存临时文件到用户目录,用户目录以 ttfile://user 开头。

通过 tt.downloadFile 下载的文件会保存在以 ttfile://temp 开头的临时目录,临时目录的文件会不定期清理,如果希望下载的文件永久保留,则可以通过 saveFile 将文件保存到以 ttfile://user 开头的用户目录下。

前提条件
业务背景
使用限制
注意事项
  • Tip:该 API 会把临时文件 移动 到用户目录下, 所以在调用成功后原文件路径将访问失败;
  • Tip:每个小程序的用户目录存储上限为 10M,不同小程序的用户目录相互隔离;
  • Tip:卸载宿主(例如头条, 抖音), 或者使用系统的清理功能将清除用户目录内的文件。
支持沙盒
相关教程

语法

tt.saveFile(options)

参数说明

options 为 object 类型,属性如下:

属性名类型默认值必填说明最低支持版本
filePathstring
要存储的路径, 必须以 `ttfile://user` 开头
1.15.0
tempFilePathstring
文件临时路径
1.15.0
successfunction
接口调用成功的回调函数
1.15.0
failfunction
接口调用失败的回调函数
1.15.0
completefunction
接口调用结束的回调函数(调用成功、失败都会执行)
1.15.0

回调成功

object 类型,属性如下:

属性名类型说明最低支持版本
savedFilePathstring
保存后文件路径
1.15.0
errMsgstring
"saveFile:ok"
1.15.0

回调失败

object 类型,属性如下:

属性名类型说明最低支持版本
errMsgstring
"saveFile:fail " + 详细错误信息
1.15.0

错误码

errNoerrMsg说明最低支持版本
20000saveFile:fail params tempFilePath is invalid
tempFilePath 参数错误
1.99.0
21101saveFile:fail ermission denied, saveFile %s
无操作权限(源文件路径不可读/目标存储路径不可写)
1.99.0
21102saveFile:fail no uch ile or directory, saveFile %s
源文件不存在或目标存储路径的父级目录不存在
1.99.0
21103saveFile:fail user dir aved file size limit exceeded
超出目录大小限制
1.99.0
21105saveFile:fail permission denied, saveFile %s
源路径不是文件类型
1.99.0

扫码体验

请使用字节宿主APP扫码

代码示例

开发者工具中预览

<!-- index.ttml -->
<view class="container">
  <button type="primary" bindtap="saveFile">保存临时文件到本地永久目录</button>
</view>
// index.js
const url =
  "https://sf1-cdn-tos.douyinstatic.com/obj/microapp/frontend/download.png"
Page({
  data: {
    // tempFilePath: ""
  },

  saveFile() {
    tt.downloadFile({
      url,
      success: (res) => {
        console.log("临时文件下载成功,下载路径: " + res.tempFilePath)
        tt.saveFile({
          // 参数: 需传入文件临时路径tempFilePath
          tempFilePath: res.tempFilePath,
          success: (data) => {
            // 返回参数中的savedFilePath属性为保存的本地文件路径
            console.log("保存成功, 本地路径为: ", data.savedFilePath)
            tt.showModal({
              content: "临时文件保存成功",
              showCancel: false,
            })
          },
          fail: (res) => {
            // 当 API 执行失败后调用, 预定义返回消息格式为${API_NAME}:fail
            console.log("临时文件保存失败", res.errMsg)
            tt.showModal({
              content: "临时文件保存失败",
              showCancel: false,
            })
          },
          complete: (res) => {
            // 当 API 执行完成(无论成功或者失败)后都会调用, 预定义返回消息格式为${API_NAME}:ok / fail
            console.log("接口已调用", res.errMsg)
          },
        })
      },
      fail: (res) => {
        console.log("下载失败: ", res.errMsg)
      },
    })
  },
})