감사 @Nelson이 있으면 알려주세요 :
당신은 가이드가 여기에 대해 나머지를 사용하여 객체 스토리지를 관리 여기에서 볼 수 있습니다 Softlayer Object Storage access through rest api. 이 링크에서 앱에서 직접 개체 저장소에 동영상을 업로드 할 수 있습니다. 자세한 내용은 Access Softlayer using Postman 링크를 참조하십시오.
나머지 API 호출을 사용하여 소프트 레이어 개체 저장소에 비디오를 업로드하고 있습니다. 내가 여기에 목적 C.에 AFNetworking를 사용하여 나머지 API를 호출하고있어 간단한 단계를 다음과 같습니다 -
내 authToken에 것은 : - "AUTH_tk9eafc199756fabe8066f"
1) "인증 토큰"와 "X-스토리지 URL을 받기 "softlayer 개체 저장소 서버에서. 이 API는 "인증 끝점 (공개 및 비공개)"을 사용하여 얻을 수 있습니다. 헤더 입력란에 '사용자 이름'과 'API 키 (비밀번호)'를 보냅니다.
2) 그 후 "인증 토큰"및 "x-Storage-url"에서 우리는 객체 저장소에 컨테이너를 만들 수 있습니다. 노호 코드 "인증 토큰"및 "X-스토리지 URL"을 이용하여 용기 내의 마지막 업로드 비디오에서
-(void)createConatiner{
NSString *authUrl = @"https://sjc01.objectstorage.softlayer.net/v1/AUTH_695d079a-ead3-4045-b303-a1b123acdb3db";
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/Container6",authUrl]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager.requestSerializer setValue:authToken forHTTPHeaderField:@"X-Auth-Token"];
[manager PUT:URL.absoluteString parameters:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSHTTPURLResponse *response = ((NSHTTPURLResponse *)[task response]);
NSDictionary *headers = [response allHeaderFields];
NSLog(@"Header Dict:: %@",headers);
if ([response statusCode] == 201) {
//Successfully container created
}else{
//Some problem occure
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"Error:: %@", error.localizedDescription);
}];}
3)
-(void)uploadFileInContainer{
NSString *authUrl = @"https://sjc01.objectstorage.softlayer.net/v1/AUTH_695d079a-ead3-4045-b303-a1b123acdb3db";
//Get Video From Document Directory
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *videoFilePath = [documentsDirectory stringByAppendingFormat:@"/vid10.mp4"];
//Convert video url to NSData
NSData *videoData = [NSData dataWithContentsOfFile:videoFilePath options:NSDataReadingMappedIfSafe error:&error];
if (videoData != nil) {
if ([PMCommonClass isNetworkRechable]) {
NSString *urlString = [NSString stringWithFormat:@"%@/Container5/Video4.mp4",authUrl];
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"PUT" URLString:urlString parameters:nil error:nil];
[request setValue:authToken forHTTPHeaderField:@"X-Auth-Token"];
[request setValue:@"video/mp4" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"video/mp4" forHTTPHeaderField:@"Accept"];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:configuration];
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromData:videoData progress:^(NSProgress * _Nonnull uploadProgress) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"UPLOAD Progress==>%f",uploadProgress.fractionCompleted*100);
});
} completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (error) {
NSLog(@"Error: %@", error.localizedDescription);
} else {
NSLog(@"Success: %@ %@", response, responseObject);
}
}];
[uploadTask resume];
}
}}
4)이어서하여 객체 저장 컨테이너에서이 업로드 대상 다운로드 같은 과정.
-(void)getObject{
NSString *authUrl = @"https://sjc01.objectstorage.softlayer.net/v1/AUTH_695d079a-ead3-4045-b303-a1b123acdb3db";
NSString *authToken = @"AUTH_tk9eafc199756fabe8066f";
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/Container5/Video4.mp4",authURL]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager.requestSerializer setValue:authToken forHTTPHeaderField:@"X-Auth-Token"];
[manager.requestSerializer setValue:@"video/mp4" forHTTPHeaderField:@"Content-Type"];
[manager.requestSerializer setValue:@"video/mp4" forHTTPHeaderField:@"Accept"];
[manager GET:URL.absoluteString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSHTTPURLResponse *response = ((NSHTTPURLResponse *)[task response]);
NSDictionary *headers = [response allHeaderFields];
NSLog(@"Header Dict:: %@",headers);
//NSLog(@"Response OBJ:: %@",responseObject);
//UIImage *image = [UIImage imageWithData:responseObject];
//NSLog(@"uiiamge %@",image);
NSData *videoData = responseObject;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *tempPath = [documentsDirectory stringByAppendingFormat:@"/video1026.mp4"];
BOOL success = [videoData writeToFile:tempPath atomically:NO];
if (success) {
NSLog(@"save Path is:: %@",tempPath);
}
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error:: %@", error.localizedDescription);
}];}
이렇게하면 소프트 레이어 개체 저장소에서 비디오를 업로드하고 다운로드 할 수 있습니다.
Github 링크 (https://github.com/softlayer?utf8 = % E2 % 9C % 93 & q = & type = & language = objective-c) SOFTLAYER Messaging 서비스. 그러나 cannnot은 iOS 용 소프트 레이어 개체 저장소를 찾지 못했습니다. 이와 같이 (https://github.com/softlayer?utf8=%E2%9C%93&q=&type=&language=php). 누구든지 iOS에서 softlayer-object-storage에 대한 유용한 링크가 있다면 도움을주십시오. –