tencent cloud

云点播

动态与公告
产品动态
公告
产品简介
产品概述
产品特性
产品功能
产品优势
应用场景
解决方案
专业版
云点播专业版简介
快速入门
控制台指南
开发指南
购买指南
计费概述
计费方式
购买指引
账单查询
续费说明
欠费说明
退费说明
快速入门
控制台指南
控制台介绍
服务概览
应用管理
媒体管理
资源包管理
License 管理
实时日志分析
实践教程
媒体上传
如何将点播的媒体文件进行智能降冷
媒体处理
分发播放
如何接收事件通知
如何进行源站迁移
直播录制
如何进行自定义源站回源
直播精彩剪辑固化至云点播 VOD 指引
如何使用 EdgeOne 分发云点播内容
开发指南
媒体上传
媒体加工处理
媒体 AI
事件通知
媒体分发播放
媒体加密与版权保护
播放频道
访问管理
下载媒体文件
应用体系
错误码
播放器 SDK 文档
概述
基本概念
产品功能
Demo 体验
免费测试
购买指南
SDK 下载
License 指引
播放器教程
含 UI 集成方案
无 UI 集成方案
高级功能
API 文档
第三方播放器插件
Player SDK Policy
服务端 API 文档
History
Introduction
API Category
Other APIs
Media Processing APIs
Task Management APIs
Media Upload APIs
Media Management APIs
Event Notification Relevant API
Media Categorization APIs
Domain Name Management APIs
Distribution APIs
AI-based Sample Management APIs
Region Management APIs
Data Statistics APIs
Carousel-Related APIs
Just In Time Transcode APIs
No longer recommended APIs
Making API Requests
AI-based image processing APIs
Parameter Template APIs
Task Flow APIs
Data Types
Error Codes
Video on Demand API 2024-07-18
常见问题
移动端播放问题
费用相关问题
视频上传问题
视频发布问题
视频播放问题
Web 端播放问题
全屏播放问题
数据统计问题
访问管理相关问题
媒资降冷问题
相关协议
Service Level Agreement
VOD 政策
隐私政策
数据处理和安全协议
联系我们
词汇表

Flutter 上传 SDK

PDF
聚焦模式
字号
最后更新时间: 2025-08-05 09:38:22

环境准备

Flutter SDK 版本:≥ 3.3.0。
在 iOS 和 Android 端上传媒体文件时,如果业务需要从相册或存储中获取文件,则需自行配置并申请相册访问权限和存储访问权限等。
Demo 中以第三方插件访问为示例,配置了所需的权限,客户可根据业务场景自行调整。
<uses-permission android:name="android.permission.INTERNET"/>

依赖组件

voduploadadv 项目,复制到本地,使用相对目录进行依赖。
这里以复制到项目的平级目录为例,在项目 pubspec.yaml 根据 voduploadadv 的相对路径进行依赖。
voduploadadv:
path: ../voduploadadv/
添加完成后,执行如下命令刷新 pub 依赖。
flutter clean
flutter pub get

配置鉴权

上传过程中,需要对您客户端的身份进行鉴权,此时需要您配置鉴权回调,在 SDK 上传过程中需要拉取鉴权的时候,会调用您配置的回调,来获取 secretId,secretKey,token,expiredTime 等信息。
注意:
该配置为必须调用项,如果不配置,会导致无法上传。
使用示例如下:
TxVodUploadPlugin.instance.initWithScopeLimitCredential((stsCredentialScopes) async {
// 建议调用服务器端获取鉴权信息
Map<String, dynamic> jsonMap = jsonDecode(testRsCre);
Map<String, dynamic> resJsonMap = jsonMap["Response"];
Map<String, dynamic> credentialsJsonMap = resJsonMap["Credentials"];
int expiredTimeStamp = DateTime.parse(credentialsJsonMap['Expiration']).millisecondsSinceEpoch;
return FTXSessionQCloudCredentials(
secretId: credentialsJsonMap["AccessKeyId"],
secretKey: credentialsJsonMap["SecretAccessKey"],
token: credentialsJsonMap["SessionToken"],
expiredTime: expiredTimeStamp);
});
在获取鉴权的时候,强烈建议您从服务器获取临时的鉴权凭证,防止鉴权凭证泄露。
其中 stsCredentialScopes 包含 action,region,bucket,prefix几个字段。
region 默认为空字符串。
bucket 为您传入的 bucketId,auto 模式下则为 auto。
prefix 前缀目录,默认为空字符串。
action 则可能会包含如下字段:
//简单上传操作
"name/cos:PutObject",
//表单上传对象
"name/cos:PostObject",
//分块上传:初始化分块操作
"name/cos:InitiateMultipartUpload",
//分块上传:List 进行中的分块上传
"name/cos:ListMultipartUploads",
//分块上传:List 已上传分块操作
"name/cos:ListParts",
//分块上传:上传分块操作
"name/cos:UploadPart",
//分块上传:完成所有分块上传操作
"name/cos:CompleteMultipartUpload",
//取消分块上传操作
"name/cos:AbortMultipartUpload"
如果您针对不同的上传应用有不同的鉴权凭证,可以根据以上信息进行区分。

创建上传对象

创建TXUploader的时候,有两种模式,分别是subAppbucket,分别对应自动模式和指定桶模式。
两种模式分别对应构造方法为TXUploader.bucketModeTXUploader.autoMode
此外还需要传入您的子应用 id,示例代码如下:
_uploader = TXUploader.bucketMode(0000000000, "xxxxxxxxxxxxx");

设置上传回调

创建完成之后,如果需要对上传状态进行监控,需要设置回调,回调均为可选择实现,业务可根据自身需要进行实现,设置回调示例代码如下:
_uploader?.setUploadCallback = FTXUploadCallback(
successCallBack: (header, result) async {
// 上传成功回调,此处可从 result 中获取上传完成后的文件 url, result.accessUrl

}, failCallBack: (clientException, serviceException) async {
// 上传失败回调,可在此处处理错误信息
}, progressCallBack: (complete, target) {
// 上传进度回调,complete 为已上传的字节数量,target为总数量
},stateCallBack:(state) {
// 上传状态变更回调
}
, startUploadCallback: (bucket, cosKey, uploadId) async {
// 上传开始回调,此处可以获得 uploadId,可以进行存储,后续如果文件上传到一半,可以传入 uploadId 进行续传
});

开始上传

根据业务需要,可选是否设置上传配置。
UploadConfig uploadConfig = UploadConfig();
uploadConfig.sliceSizeForUpload = 1024 * 1024 * 2; // 默认设置分片大小2M,可根据项目需要来调整
uploadConfig.isHttps = true; // 是否开启 https,默认开启
uploadConfig.enableVerification = true; // 是否开启分片校验,默认开启

配置上传参数

上传参数 UploadParams 参数如下:
参数
含义
localFilePath
本地文件路径,必传。
fileKey
上传文件键值,为上传到服务器的文件名,必传。
uploadId
上传 uploadId,可不传,传入则会续传之前该 uploadId 没有上传的部分。
uploadConfig
上传配置,可不传。
配置完成后,可以开始上传,示例如下:
int? code = await _uploader?.upload(params);
if (code == TXUploadCode.TX_UPLOAD_OK) {
showResult("正在上传");
} else {
showResult("上传 code$code");
}
上传 code 的返回值:
TXUploadCode.TX_UPLOAD_OK,代表调用成功。
TXUploadCode.TX_UPLOAD_BUSY 代表该 TXUploader 已经在处理上传,拒绝再次调用。
TX_FILE_NOT_FOUND 代表传入的文件路径不存在。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈