Благодаря @Nelson для этой ссылки Softlayer Object Storage access through rest api. По этой ссылке мы можем загружать видео в хранилище объектов непосредственно из приложения. Для получения дополнительной информации вы видите эту ссылку Access Softlayer using Postman.
Я загружаю видео в хранилище объектов softlayer с помощью вызова rest api. Я звоню REST API с помощью AFNetworking в Objective C. Ниже приведены следующие простые шаги: -
Мои authToken является: - "AUTH_tk9eafc199756fabe8066f"
1) Получить "токен аутентификации" и «X-накопителя данных URL «с сервера хранения объектов softlayer. Вы можете получить это, используя «Конечная точка аутентификации (общедоступная и приватная)», это 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) После того, что от "токен аутентификации" и "х-Storage-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) На последнем видео загрузки в контейнере с помощью "Auth маркеров" и "х-Storage-URL" с сильфоном кодом
-(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);
}];}
Это следующий шаг для загрузки и скачивания видео с хранения объектов softlayer.
Обнаружена ссылка Github (https://github.com/softlayer?utf8 =% E2% 9C% 93 & q = & type = & language = object-c) для службы сообщений SOFTLAYER. Но cannnot нашел какой-либо softlayer-object-storage для iOS. точно так же (https://github.com/softlayer?utf8=%E2%9C%93&q=&type=&language=php). Если у кого-нибудь есть полезная ссылка для хранения softlayer-объектов в iOS, пожалуйста, помогите. –