iPhone SDK: загрузка нескольких изображений на сервер по запросу SOAP
Я очень хорошо знаю, что вы можете считать эту ветку дубликатом только потому, что несколько раз этот вопрос задавался по-разному. Я не нашел решения из существующих вопросов на этом форуме, и поэтому я собираюсь создать новую тему.
Здесь у меня есть код для загрузки нескольких изображений одновременно. Поэтому, пожалуйста, запишите предложение "загрузка нескольких изображений".
Я хочу загрузить 1, 2, 3 или 4 изображения вместе с некоторыми текстовыми параметрами, и проблема, с которой я сталкиваюсь, заключается в том, что "одно и то же изображение загружается несколько раз", то есть одно изображение имеет несколько раз на сервере.
Пример:
NSString *urlString = [NSString stringWithFormat:@"%@/MultipleImageUpload",soapAction];
NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] init];
[theRequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[theRequest setHTTPShouldHandleCookies:NO];
[theRequest setTimeoutInterval:60];
[theRequest setURL:[NSURL URLWithString:urlString]];
[theRequest setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",BOUNDARY_MULTIPART_IMAGE];
[theRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
//parameter SecurityCode
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BOUNDARY_MULTIPART_IMAGE] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"SecurityCode\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[SEC_CODE dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
//parameter LoggedInUserID
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BOUNDARY_MULTIPART_IMAGE] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"LoggedInUserID\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@“23433” dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
//parameter Device
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BOUNDARY_MULTIPART_IMAGE] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"Device\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@“iPhone” dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
for (int i=0; i<[arrImgs count]; i++) {
UIImage* image = [arrImgs objectAtIndex:i];
NSData *imgData = UIImageJPEGRepresentation(image, 1.0);
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BOUNDARY_MULTIPART_IMAGE] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"product_photo\"; filename=\"%d.jpg\"\r\n", i] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imgData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
// close form
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", BOUNDARY_MULTIPART_IMAGE] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the request
[theRequest setHTTPBody:body];
return theRequest;
Пожалуйста, дайте мне знать, если у кого-нибудь есть решение для этого..
Спасибо,
Нилеш М. Праджапати
1 ответ
Извините всех, но у меня есть решение. На самом деле, я должен установить динамическое имя файла в нижних строках. Я должен установить "product_photo" как динамическую строку, имеющую случайное число, например "product_photo1" или "product_photo2" и т. Д.
for (int i=0; i<[arrImgs count]; i++)
{
UIImage* image = [arrImgs objectAtIndex:i];
NSData *imgData = UIImagePNGRepresentation(image);
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BOUNDARY_MULTIPART_IMAGE] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"product_photo%d\"; filename=\"%d.png\"\r\n", i,i] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/png\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imgData];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}