上一章讲了讲解了https。但是双向在打开网络图片时遇到问题 ,搞了我很久,最后决定绕开后台 直接将图片上传到阿里云的oss上面。我只需要把图片名字给后台 ,后台直接给我地址,我就不用给服务器传文件拉 我直接在oss上面获取网络图片 。百度了一波资料很少,于是决定写一波同学们要是遇到这方面的问题可以看看我的。
- (void)ImageAyyay:(NSArray *)dataSoure success:(void (^)(id res))success{
array = [NSMutableArray array];
NSString *endpoint = @"http://sddfs.com";//后台给的
// 明文设置secret的方式建议只在测试时使用,更多鉴权模式参考后面链接给出的官网完整文档的`访问控制`章节
id<OSSCredentialProvider> credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:@""
secretKey:@""];//后台给的
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
for (int i = 0; i<dataSoure.count; i++) {
put.bucketName = @"";//后台给的
put.objectKey = [NSString stringWithFormat:@"LS%@.jpg",[self getTimeNow]];
put.uploadingData = dataSoure[i]; // 直接上传NSData字节
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
OSSTask * putTask = [client putObject:put];
[putTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
[array addObject:put.objectKey];//多张图片时这里面存放的图片名字的数组在把这些名字弄成json字符串 给服务器
if (dataSoure.count > 1) {
if (i == dataSoure.count-1) {
success(array);
}
}else{
success(put.objectKey);
}
} else {
NSLog(@"upload object failed, error: %@" , task.error);
}
return nil;
}];
[putTask waitUntilFinished];//这个时sdk给的用于多张图片上传时 加上它时只有第一个走了成功或者失败第二个才会走 。相当于等待串行。
}
}
oss的好处大家就自己百度吧