之前维护一个项目用到VODUpload上传头像,因为太忙,并没有深入研究,在此先记录一下简单的使用。
1、官方连接demo连接
安装SDK:

pod 'VODUpload'

导入头文件

#import <VODUpload/VODUploadClient.h>
#import <VODUpload/VODUploadModel.h>

2、初始化VODUpload

#pragma mark --初始化
- (void)initVODUpload {
    WEAKSELF;
    OnUploadStartedListener testUploadStartedCallbackFunc = ^(UploadFileInfo* fileInfo) {
        NSLog(@"upload started .");
        [weakSelf.uploader setUploadAuthAndAddress:fileInfo uploadAuth:weakSelf.codeModel.UploadAuth uploadAddress:weakSelf.codeModel.UploadAddress];
    };
    OnUploadSucceedListener testSuccessCallbackFunc = ^(UploadFileInfo* fileInfo){
        NSLog(@"file:%@ upload success!", fileInfo.filePath);
        dispatch_async(dispatch_get_main_queue(), ^{
             [weakSelf updateHeaderImg];
         });
    };
    OnUploadFailedListener testFailedCallbackFunc = ^(UploadFileInfo* fileInfo, NSString *code, NSString * message){
        NSLog(@"failed, filePath:%@, code = %@, error message = %@", fileInfo.filePath, code, message);
    };
    // 单位:字节
    OnUploadProgressListener testProgressCallbackFunc = ^(UploadFileInfo* fileInfo, long uploadedSize, long totalSize) {
        NSLog(@"progress uploadedSize : %li, totalSize : %li", uploadedSize, totalSize);
    };
    OnUploadTokenExpiredListener testTokenExpiredCallbackFunc = ^{
        NSLog(@"*token expired.");
        // get token and call resmeUploadWithAuth.
    };
    OnUploadRertyListener testUploadRertyListener = ^{
        NSLog(@"retry begin.");
    };
    OnUploadRertyResumeListener testUploadRertyResumeListener = ^{
        NSLog(@"retry resume.");
    };
    VODUploadListener *listener;
    listener = [[VODUploadListener alloc] init];
    listener.started = testUploadStartedCallbackFunc;
    listener.success = testSuccessCallbackFunc;
    listener.failure = testFailedCallbackFunc;
    listener.progress = testProgressCallbackFunc;
    listener.expire = testTokenExpiredCallbackFunc;
    listener.retry = testUploadRertyListener;
    listener.retryResume = testUploadRertyResumeListener;

    self.uploader = [[VODUploadClient alloc] init];
    [self.uploader init:@"LTAI4GL54MAJesJsDyXKaWgG" accessKeySecret:@"sEo0LFyWksDtGhwxs649qdkLZr6cB0" listener:listener];
}

3、上传文件

#pragma mark --上传视频文件
- (void)uploadVideo{
    NSLog(@"上传视频文件:%@", self.selectPathFile);
    [self.uploader addFile:self.selectPathFile vodInfo:nil];
    //注意:开始上传前要先获取授权,开始上传时需要用到授权信息这里是关键,需要从服务器获得两个参数
    [self getUploadAuthAndAddressWithFilePath:self.selectPathFile];
     __weak typeof(self) weakSelf = self;
    OnUploadStartedListener testUploadStartedCallbackFunc = ^(UploadFileInfo* fileInfo) {
        NSLog(@"upload started .");
        [weakSelf.uploader setUploadAuthAndAddress:fileInfo uploadAuth:weakSelf.codeModel.UploadAuth uploadAddress:weakSelf.codeModel.UploadAddress];
    };
}

4、从后台获得UploadAuth和UploadAddress

#pragma mark --获取授权
- (void)getUploadAuthAndAddressWithFilePath:(NSString *)filePath {
    if (!filePath) {
        NSLog(@"视频文件路径错误");
        return;
    }

    NSArray *arr1 = [filePath componentsSeparatedByString:@"/"];
    NSString *fileName = [arr1 lastObject];
    if (!fileName) {
        NSLog(@"获取视频文件名称错误");
        return;
    }

    NSArray *arr2 = [fileName componentsSeparatedByString:@"."];
    NSString *fileTitle = [arr2 firstObject];
    if (!fileTitle) {
        NSLog(@"获取视频文件标题错误");
        return;
    }

    WEAKSELF;
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [self showLoadingHud];
    [HBNetworkService POST:url parameters:parameters success:^(LBResponse *response) {
        [weakSelf dissmissHud];
        if (response.succeed) {
            NSDictionary *dic = response.result[@"resultdata"];
            if (ValidDict(dic)) {
            //获得后台传过来的数据
                weakSelf.codeModel = [HBAuthCodeModel mj_objectWithKeyValues:dic];
                //开始上传
                [weakSelf.uploader start];
            }
        }else{
            //请求错误
            [weakSelf showInfoHudWithMessage:response.message] ;
        }
    } failure:^(NSError *error) {
        [weakSelf dissmissHud];
        [weakSelf showInfoHudWithMessage:RequestServerFaild] ;
    }];
}

END.

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐