使用 SDK

使用场景

TMFUploader 基于安全网关 TMFShark 提供分片上传功能和断点续传功能,可以将要上传的文件分成多个数据块( TMFUploader 里面称之为 FileFragment )来上传,上传完成之后 TMFUploader 自动调用 TMFShark 接口将这些 FileFragment 合成一个 File 来达到断点续传的效果。

通常使用简单上传来上传较大的文件时,如果上传过程中出现了网络错误,那么此次上传失败,重试必须从文件起始位置上传。针对这种情况,可以使用分片上传来达到断点续传的效果。

相对其他上传方式,分片上传适用于以下场景:

  • 断点续传。
    存在中途暂停的操作,可以从上次上传完成的 FileFragment 的位置继续上传。
  • 不稳定的网络环境。
    移动环境网络波动较大,当出现上传失败的时候,可以仅上传失败的 FileFragment ,不需要重新上传其他的 FileFragment

自定义上传配置

获取上传配置的实例对象

接口定义

+ (TMFUploadConfiguration *)configuration;

调用示例

TMFUploadConfiguration *configuration = [TMFUploadConfiguration configuration];

创建文件资源标识

生成文件资源标识实例对象。

接口定义

+ (TMFUploadFileURI *)URIWithFilePath:(NSString *)filePath businessId:(NSString *)businessId;
+ (TMFUploadFileURI *)URIWithFilePath:(NSString *)filePath businessId:(NSString *)businessId params:(NSDictionary *)params;

参数说明

参数 类型 描述 必选
filePath NSString 本地文件沙盒路径 Y
businessId NSString 上传业务标识 Y
params NSDictionary 上传自定义扩展参数 N

返回值

类型 描述
TMFUploadFileURI 文件资源标识实例对象

调用示例

NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.png"];
TMFUploadFileURI *fileURI = [TMFUploadFileURI URIWithFilePath:path businessId:@"busId1"];
NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.png"];
NSDictionary *param = @{@"tenantId":@"photo",@"type":@"jpg",@"fileName":@"testImg"};
TMFUploadFileURI *fileURI = [TMFUploadFileURI URIWithFilePath:path businessId:@"busId1" params:param];

创建分片上传任务

为本地文件标识创建一个上传任务的实例。

接口定义

  1. TMF默认文件服务器,返回 URL。

    - (nullable TMFUploadTask *)uploadTaskWithFileURI:(TMFUploadFileURI *)fileURI progressHandler:(nullable void (^)(NSProgress * _Nullable progress))progressHandler completionHandler:(nullable void (^)(NSString * _Nullable URL, NSError * _Nullable error))completionHandler;
    
  2. 返回文件服务器原始数据 result。

    - (nullable TMFUploadTask *)uploadTaskWithFileURI:(TMFUploadFileURI *)fileURI progressHandler:(nullable void (^)(NSProgress * _Nullable progress))progressHandler completionOriginalHandler:(nullable void (^)(NSData * _Nullable result, NSError * _Nullable error))completionHandler;
    

参数说明

参数 类型 描述 必选
fileURI TMFUploadFileURI 本地文件资源标识 Y

progressHandler 回调

参数 类型 描述 必选
progress NSProgress 上传进度 Y

completionHandler 回调1

参数 类型 描述 必选
URL NSString 上传成功后的文件 URL Y
error NSError 上传失败时的错误信息 N

completionHandler 回调2

参数 类型 描述 必选
result NSData 上传成功后的服务器透传消息 Y
error NSError 上传失败时的错误信息 N

其中,TMFUploadFileURI 的创建见 创建文件资源标识

返回值

类型 描述
TMFUploadTask 上传任务实例对象

调用示例

// fileURI:
NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.png"]
TMFUploadFileURI *fileURI = [TMFUploadFileURI URIWithFilePath:path businessId:@"busId1"];
// uploadTask:
/*
TMFUploadTask *uploadTask = [[TMFUploadManager defaultManager] uploadTaskWithFileURI:fileURI progressHandler:^(NSProgress * _Nullable progress) {
  NSLog(@"%@",progress);
} completionHandler:^(NSString * _Nullable URL, NSError * _Nullable error) {
  NSLog(@"URL: %@, error : %@",URL, error);
}];
*/
TMFUploadTask *uploadTask = [[TMFUploadManager defaultManager] uploadTaskWithFileURI:fileURI progressHandler:^(NSProgress * _Nullable progress) {
    NSLog(@"%@",progress);
} completionOriginalHandler:^(NSData * _Nullable result, NSError * _Nullable error) {
      NSString *resString = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
    NSLog(@"result: %@, error : %@",resString, error);
}];
[uploadTask resume];

自定义上传任务管理对象

根据自定义上传配置生成上传任务管理对象实例

注意:每个任务管理对象对应一个上传会话,自定义的任务管理对象建议重用,或者使用默认的任务管理对象。

接口定义

+ (TMFUploadManager *)managerWithConfiguration:(TMFUploadConfiguration *)configuration;

参数说明

参数 类型 描述 必选
configuration TMFUploadConfiguration 上传配置的实例对象 Y

其中,TMFUploadConfiguration 的创建见 自定义上传配置

返回值

类型 描述
TMFUploadManager 上传任务管理对象

调用示例

// configuration:
TMFUploadConfiguration *configuration = [TMFUploadConfiguration configuration];
configuration.allowsCellularAccess = NO;

// uploadManager:
TMFUploadManager *uploadManager = [TMFUploadManager managerWithConfiguration:configuration];
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""