2015-04-16 5 views
1

В моем приложении IOS я хочу отправить изображение на сервер вместе с именем изображения, используя HTTP-запрос.
Я программист со встроенным фоном, поэтому не знаю, с помощью HTTP-вызовов, и совершенно новый для разработки iPhone.Отправка изображения на сервер из IOS

Как это сделать, любой образец кода или учебники будут оценены.

+0

Вы можете использовать фреймворк AFNetworking для отправки фотографий с мобильных устройств. Проверьте это [link] (http://stackoverflow.com/questions/16692102/send-image-along-with-other-parameters-with-afnetworking) – aykutt

ответ

0

Самый простой способ для вас с моей точки зрения - использовать AFNetworking.

Он отправит изображение на страницу php, а затем на сервере вы создадите и сохраните изображение с отправленными данными.

Here's базовый учебник, но много других в Интернете.

0

Для этого вы можете сделать что-то вроде этого, используя ASIHTTPRequest

NSURL *strUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@?action=youraction",serverUrl]]; 
ASIFormDataRequest *request; 
request = [[[ASIFormDataRequest alloc] initWithURL:strUrl] autorelease]; 
[request setRequestMethod:@"POST"]; 
[request setTimeOutSeconds:120]; 

NSString *imagePAth = userImagePath; 

NSArray *imageName = [userImagePath componentsSeparatedByString:@"/"]; 

if(userImagePath) 
{ 
    [request setFile:imagePAth withFileName:[imageName lastObject] andContentType:@"image/jpeg"     forKey:@"profileImage"]; 
} 

[request setUseCookiePersistence:NO]; 
[request setUseSessionPersistence:NO]; 
[request setDelegate:self]; 

[request setDidFinishSelector:@selector(requestFinished:)]; 
[request setDidFailSelector:@selector(requestFailed:)]; 

[request startAsynchronous]; 

- (void)requestFinished:(ASIHTTPRequest *)request 

{ 

} 

- (void)requestFailed:(ASIHTTPRequest *)request 
{ 

} 
+0

, которые в заголовочных файлах мне нужно включить – Sarao

+0

#import "ASIFormDataRequest.h" –

+0

Я думаю, что #import «ASIFormDataRequest.h» не работает в ios8 – Sarao

1

Лучше подход к первым сжать изображение с помощью Image Compress Library Here, а затем загрузить его с помощью и Сеть библиотек Лик AF Networking, или вы можете также отправить его используя NSUrlConnection. AFNetworking прост в использовании. Вы можете посетить this page, чтобы узнать, как импортировать это в свой проект. Напишите эти строки кодов.

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; 
[manager POST:@"http://samwize.com/api/poo/" 
    parameters:@{@"color": @"green"} 
    constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    [formData appendPartWithFileURL:filePath name:@"image" error:nil]; 
} success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"Success: %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 
0

Использование NSURLConnection, убедитесь, что вы конвертировать изображения в NSData user_id и ключ есть параметры.

NSURL *URL = [NSURL URLWithString:constFileUploadURL]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
[request setHTTPShouldHandleCookies:NO]; 
[request setTimeoutInterval:60]; 
[request setHTTPMethod:@"POST"]; 
NSString *boundary = @"0xLhTaLbOkNdArZ"; 

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
[request addValue:contentType forHTTPHeaderField:@"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 

[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user_id\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
NSString *userid = [NSString stringWithFormat:@"%li",userID]; 
[body appendData:[userid dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 


[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"key\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[constBackendKey dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

for (NSData *data in arrayWithFiles) 
{ 
     [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"files%ld\"; filename=\"image%ld.jpg\"\r\n",[arrayWithFiles indexOfObject:data],[arrayWithFiles indexOfObject:data]] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[NSData dataWithData:data]]; 
     [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[request setHTTPBody:body]; 
_connection = [NSURLConnection connectionWithRequest:request delegate:self]; 
Смежные вопросы