В настоящее время у меня установлено расширение общего доступа, которое загрузит изображение, выбранное из приложения «Фото», на сервер. Это работает отлично, используя приведенный ниже код.Загрузка нескольких изображений из расширения Share
int fileNum=10;
NSItemProvider *attachment = inputItem.attachments[0];
if ([attachment hasItemConformingToTypeIdentifier:(NSString*)kUTTypeImage])
{
[attachment loadItemForTypeIdentifier:(NSString*)kUTTypeImage options:nil completionHandler:^(id item,NSError *error)
{
if (item)
{
NSLog (@"image %@",item);
//upload image here
NSData *data=[NSData dataWithContentsOfURL:item];
[email protected]"Images";
AppRecord *appRecord=[[AppRecord alloc] init];
appRecord.fileName=[NSString stringWithFormat:@"activity_%@%i(%i).jpg",activityRecord.supplierID,activityRecord.activityID,fileNum];
appRecord.fileBytes=data;
[fileRecords addObject:appRecord];
activityRecord.activityFiles=fileRecords;
[[Settings getInstance] uploadActivityRecord:activityRecord withDelegate:self];
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}
}];
}
Я имел предыдущую задачу, в которой метод loadItemForTypeIdentifier
не будучи под названием, и она была решена путем вызова completeRequestReturningItems
в блоке завершения. Проблема в том, что если я хочу загрузить несколько файлов, мне нужно вызвать loadItemForTypeIdentifier
в цикле for (для каждого изображения), но как я могу это сделать, если метод метода completeRequestReturningItems
будет вызываться после первого изображения/элемента?
Большое спасибо Пол
Привет, Waggly, вы можете объяснить, как вы используете uploadActivityRecord, я борюсь с загрузкой сервера, потому что они не позволяют мне использовать фоновый поток с загрузкой NSData. –
Привет, Бруно, я подклассифицировал NSOperation так, чтобы у меня была очередь загрузки, а затем использовала SOAP для загрузки данных на сервер. [link] http://sudzc.com/ - полезный сервис для создания ваших SOAP-объектов в объекте-C. Является ли ограничение на загрузку на ваш сервер из-за размера ваших NSData? – WagglyWonga
Спасибо @WagglyWonga за ответ, ограничение было на стороне iOS, не позволяя мне загружать фоновый поток или использовать какие-либо блоки для проверки завершения. Но мне удалось загрузить его, отправляя NSData напрямую, используя sendAsynchronousRequest с очередью. Мне просто нужно было создать полный многопрофильный запрос. Это работает :) Cheers –