2017-01-12 5 views
0

Objective C를 사용하여 SOFTLAYER (IBM Cloud) 서버에 비디오를 업로드해야합니다. Objectcode C로 xcode7.2를 사용하고 있습니다. 동영상을 업로드하는 방법을 모르겠습니다. 클라우드 기반 서버에 연결하십시오. SOFTLAYER API 링크로 가면 iOS에 대한 가이드 라인이나 목표 C를 사용하여 SOFTLYAER를 구현하는 방법에 대한 지침이 없습니다. 제 질문은 SOFTLAYER를 Xcode에 통합하는 방법과이를 구현하는 방법입니다.동영상을 SOFTLAYER (IBM Cloud)에 업로드

스크린 샷을 SOFTLAYER guide으로 추가하고 있습니다. iOS 용 가이드가 없습니다. SOFTLAYER GUIDE IMAGE

Objective C를 사용하여 SOFTLAYER 서버에 비디오를 업로드하는 사람이 있거나 이에 대한 아이디어가 있으면 도움을 주시기 바랍니다.

미리 감사드립니다.

https://github.com/softlayer

그러나 목표 - C를 사용하여 객체 스토리지를 관리하는 특정 클라이언트가없는,하지만 당신은 간단한 휴식을 사용 SOFTLAYER의 객체 스토리지를 관리 할 수 ​​있습니다 : 당신이 쓴

+0

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에 대한 유용한 링크가 있다면 도움을주십시오. –

답변

0

예로서 모든 SOFTLAYER 클라이언트는 여기에 있습니다 요청을 보내고 비디오를 성공적으로 업로드 할 수있게하려면 Objective-C가 REST 요청을 처리 할 API를 제공해야합니다.

https://sldn.softlayer.com/blog/waelriac/managing-softlayer-object-storage-through-rest-apis

는이 링크에 대한 더 많은 질문

감사

+0

귀중한 도움을 주신 @Nelson에게 감사드립니다. 이것은 나를 위해 매우 도움이 될 것입니다. 나는 그것을 구현하고있다. 이러한 유형의 비디오 업로드를위한 샘플 코드가 있습니까? 나는이 링크 (http://sldn.softlayer.com/article/REST)를 발견했다. 두 링크가 동일합니까? –

+0

링크는 softlayer에서 가져 왔지만 댓글에있는 링크는 다른 Sofltayer의 서비스와 함께 REST를 사용하는 방법에 관한 것입니다. 비디오와 관련된 예제들에 관해서 나는 그것에 대해 softlayer 예제를 본 적이 없다는 것을 당신에게 말하기 위해 affraid입니다. 그러나 Softlayer의 객체 저장소는 Open Stack을 기반으로하므로 Open Stack에 대한 업로드 비디오의 예가있을 수 있습니다. –

+0

또한 이러한 링크는 스택을 열기 위해 큰 파일을 업로드하는 것과 관련되어 있습니다. Softlayer와 동일한 아이디어가 적용됩니다. http://docs.openstack.org/user-guide/cli-swift-large-object-creation .html http://docs.openstack.org/developer/swift/overview_large_objects.html –

0

감사 @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); 
}];} 

이렇게하면 소프트 레이어 개체 저장소에서 비디오를 업로드하고 다운로드 할 수 있습니다.