を知ってみましょう、このリンクをありがとう@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);
}];}
これは、ソフトレイヤオブジェクトストレージからビデオをアップロードしてダウンロードするための次の手順です。
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のソフトレイヤーオブジェクトストレージに役立つリンクがあれば、助けてください。 –