2017-01-12 8 views
0

Objective Cを使用してSOFTLAYER(IBM Cloud)サーバーにビデオをアップロードする必要があります。私はObjective Cでxcode7.2を使用しています。ビデオをアップロードする方法はありませんクラウドベースのサーバーを使用してください。SOFTLAYER APIリンクに行くとき、iOSのガイドラインやObjective Cを使用してSOFTLYAERを実装する方法はありません。私の質問は、XcodeにSOFTLAYERを統合する方法とこれを実装する方法です。ビデオをSOFTLAYER(IBM Cloud)にアップロード

私はSOFTLAYER guideのスクリーンショットを追加していますが、iOSのガイドはありません。 SOFTLAYER GUIDE IMAGE

Objective Cを使用してSOFTLAYERサーバーに動画をアップロードしている場合、またはこれについてご意見がありましたらお気軽にお問い合わせください。

ありがとうございます。

https://github.com/softlayer

は、しかし、Objective-Cのを使用して、オブジェクトストレージを管理するために、特定のクライアントが存在しない、しかし、あなたは、簡単な休息を使用してSOFTLAYERのオブジェクト・ストレージを管理することができます:あなたはすべてのSOFTLAYERクライアントがここにある書いたよう

+0

Githubのリンクが見つかりました(https://github.com/softlayer?utf8 =%E2%9C%93&q =&type =&language = objective-c)SOFTLAYERメッセージングサービス。しかし、cannnotはiOS用の任意のソフトレイヤーオブジェクトストレージを発見しました。これと同じように(https://github.com/softlayer?utf8=%E2%9C%93&q=&type=&language=php)。 iOSのソフトレイヤーオブジェクトストレージに役立つリンクがあれば、助けてください。 –

答えて

0

はいリクエストを受け取り、ビデオを正常にアップロードできるようになるためには、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のオブジェクトストレージは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を使用してのREST APIを呼んでいる: -

マイauthTokenのは、次のとおりです。 - "AUTH_tk9eafc199756fabe8066f"

1)は、 "認証トークン" と「X-ストレージURLを取得します"ソフトレイヤオブジェクトストレージサーバから。これは、このAPIを使用して "認証エンドポイント(公開および非公開)"を使用して取得できます。ヘッダーフィールドに「ユーザー名」と「APIキー(パスワード)」を送信します。

-(void)callRestAPI{ 

NSURL *URL = [NSURL URLWithString:@"https://sjc01.objectstorage.softlayer.net/auth/v1.0/"]; 
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; 
[manager.requestSerializer setValue:@"HJYBOS984353-3:ghym8435" forHTTPHeaderField:@"X-Auth-User"]; 
[manager.requestSerializer setValue:@"26704dbc93e5c39986da451e539857f6596dc9be18aad7a6b4dc2822f48e66f8" forHTTPHeaderField:@"X-Auth-Key"]; 
[manager GET:URL.absoluteString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) { 

    NSHTTPURLResponse *response = ((NSHTTPURLResponse *)[task response]); 
    NSDictionary *headers = [response allHeaderFields]; 
    authURL = [headers valueForKey:@"X-Storage-Url"]; 
    authToken = [headers valueForKey:@"X-Auth-Token"]; 
    NSLog(@"\nHeader Token:: %@ \n Header URL:: %@ \n",authToken,authURL); 

    [PMCommonClass userDefaultValueSave:authToken key:SOFTLAYER_AUTH_TOKEN]; 
    [PMCommonClass userDefaultValueSave:authURL key:SOFTLAYER_AUTH_URL]; 

    NSDictionary *mainDict = [PMCommonClass jsonDictionaryFromResponse:responseObject]; 
    NSLog(@"Main Dict:: %@",mainDict); 
} failure:^(NSURLSessionTask *operation, NSError *error) { 
    NSLog(@"Error:: %@", error.localizedDescription); 
}]; 
} 

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

これは、ソフトレイヤオブジェクトストレージからビデオをアップロードしてダウンロードするための次の手順です。

関連する問題