美文网首页
iOS上传数据到阿里云(AliyunOSSiOS)的坑

iOS上传数据到阿里云(AliyunOSSiOS)的坑

作者: Fendouzhe | 来源:发表于2017-12-07 10:52 被阅读0次

我们公司项目要做在线培训,在我们上传培训图片和语音的时候。伟大的后台告诉我,前台应该直接向阿里传递数据,这样的路径是:iOS端—>阿里。以往我们的传递路径都是:iOS端—>后台—>阿里。


正文

首先,给大家阿里sdk的github地址,在这里你可以下载他们的idk,看一下他们的介绍。

想上传到阿里,首先要有对应的阿里的账号参数,填写到这里

NSString * const AccessKey = @"";

NSString * const SecretKey = @"";

OSSClient是OSS服务的iOS客户端,它为调用者提供了一系列的方法,用于和OSS服务进行交互。一般来说,全局内只需要保持一个OSSClient,用来调用各种操作。

上面这一句是阿里的说法,那我们就听从人家的建议吧:


@interface ViewController (){

OSSClient * client;

}

用明文AK/SK实现的加签器(官方建议只在测试模式时使用)

NSString *endpoint = @"自己的参数";//比如http://ios.ali.comidcredential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:AccessKey secretKey:SecretKey];

client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];

OSSPutObjectRequest * put = [OSSPutObjectRequest new];

Bucket名称, Object名称

put.bucketName = @"自己的数据";

put.objectKey = @"自己的数据";

上传数据,有两种方式:

1.data上传

put.uploadingData = self.imageData;//自己的NSData数据

2.上传路径

put.uploadingFileURL = [NSURL fileURLWithPath:fullPath];

当然,上传的时候你也可以看一看你的上传进度,还有一些参数配置(这一步不是必须的):

put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {

NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);

};

所有调用api的操作,都会立即获得一个OSSTask。这是官方的说法。这一步是最重要的一步,成不成功就看他了。

OSSTask * putTask = [client putObject:put];

[putTask continueWithBlock:^id(OSSTask *task) {

task = [client presignPublicURLWithBucketName:@"同上面的bucketName"

withObjectKey:同上];

NSLog(@"objectKey: %@", put.objectKey);

if (!task.error) {

OSSPutObjectResult * result = task.result;

NSLog(@"upload object success!");

NSLog(@"Result - requestId: %@",

result.requestId);

} else {

NSLog(@"upload object failed, error: %@" , task.error);

OSSPutObjectResult * result = task.result;

NSLog(@"requestId: %@",

result.requestId);

}

return nil;

}];

好了,这就是全部的上传的代码。关于最后一步我要说一下,官方给的代码是:

OSSTask * putTask = [client putObject:put];

[putTask continueWithBlock:^id(OSSTask *task) {

if (!task.error) {

NSLog(@"upload object success!");

} else {

NSLog(@"upload object failed, error: %@" , task.error);

}

return nil;

}];

没有这一句代码:

task = [client presignPublicURLWithBucketName:@"同上面的bucketName"

withObjectKey:同上];

相关文章

  • iOS上传数据到阿里云(AliyunOSSiOS)的坑

    我们公司项目要做在线培训,在我们上传培训图片和语音的时候。伟大的后台告诉我,前台应该直接向阿里传递数据,这样的路径...

  • iOS版上传数据到阿里后台(AliyunOSSiOS)

    前言 我们用的阿里的存储服务,在我们上传头像的时候。伟大的后台告诉我,前台应该直接向阿里传递数据,这样的路径是:i...

  • 上传图片文件至阿里云

    首先cocoapod安装AliyunOSSiOS 一.请求阿里//阿里云服务的sts认证请求 (void)getA...

  • 阿里云(I)

    参考资料:iOS 阿里云服务器图片上传iOS录制(或选择)视频,压缩、上传(整理)视频 拍摄 与压缩 阿里云OSS...

  • 移动端实现图片压缩上传

    上传图片有很多框架,或者是阿里云直传,关于阿里云直传可以看我之前的博客上传图片到阿里云,这次是通过后台进行操作上传...

  • 阿里云上传

    阿里云上传 1. 导入阿里云上传SDK 2. 实例化阿里云 3. 使用阿里云上传实例

  • 将阿里云OSS的Bucket挂载到Linux本地

    我在上一篇博客Linux本地数据上传到阿里云OSS中介绍了如何将linux本地的数据上传到阿里云的OSS,在这篇博...

  • 关于文件上传

    之前的文件上传,基本都是上传到阿里云,然后拿到具体的链接给到后台,但是最近,要求直接传文件给后台,实现数据的传输....

  • iOS 集成 AliyunOSSiOS 阿里 存储服务

    1: pod 'AliyunOSSiOS' 2:初始化: 一定要在AppDelegate 里面初始化。我们是OC ...

  • antd上传图片到阿里云的oss服务器

    在使用antd的时候可以很方便的实现上传图片的功能,但是最近使用到阿里云的oss服务器存储文件数据,比较坑爹的事情...

网友评论

      本文标题:iOS上传数据到阿里云(AliyunOSSiOS)的坑

      本文链接:https://www.haomeiwen.com/subject/txcdixtx.html