2015-09-29 1 views
0

Я пытаюсь сфотографировать и отправить базу данных (json использованием postmethod) в ИОСЗагрузить изображение на сервер Ios.I есть UIImageView и хотите отправить ImageView изображение на сервер для Objective C

-(IBAction)upload:(id)sender 
{ 
    // NSData *imageData = UIImagePickerControllerCameraCaptureModePhoto;  
    // UIImagePNGRepresentation(yourImage); 
    NSData *imageData = UIImageJPEGRepresentation(imageview.image,0.8); 
    NSString *urlString = [ NSString  stringWithFormat:@"https://www.******/xyz/jsonurl.php?action=insert&lat=80.2626&long=29.64565&cat=1&note=&date=&sdkuserid=12345&nick_name=sandy&place_address=pluto&p_id=3&intid=%d,&name=userfile&filename=%@",1,imageData]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

    NSString *boundary = @"---------------------------14737809831466499882746641449"; 

    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--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%d\"\r\n", 1]] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[NSData dataWithData:imageData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [request setHTTPBody:body]; 
    NSLog(@" body %@",body); 

    [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
} 
+0

Какой вопрос? – BoilingLime

+0

Попытка загрузить изображение на сервер –

ответ

1

Попробуйте этот код и дать мне ответ

-(IBAction)upload:(id)sender 
{ 
    NSData *imageData = UIImageJPEGRepresentation(imageview.image,0.8); 
    NSString *urlString = [ NSString stringWithFormat:@"https://www.******/xyz/jsonurl.php?action=insert&lat=80.2626&long=29.64565&cat=1&note=&date=&sdkuserid=12345&nick_name=sandy&place_address=pluto&p_id=3&intid=1"]; 
    urlString =[[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; 
    [request setURL:[NSURL URLWithString:Urlstr]]; 
    [request setHTTPMethod:@"POST"]; 
    NSString *boundary = @"---------------------------14737809831466499882746641449"; 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyyMMdd_hhmmss"];   
    NSString * fileName =[NSString stringWithFormat:@"%@",[formatter stringFromDate:[NSDate date]]]; 
    NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"New%@.png\"\r\n",fileName] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[NSData dataWithData:imageData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [request setHTTPBody:body]; 

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    NSString *ImageString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

} 
+0

Если и мне нравится мой ответ, поэтому, пожалуйста, примите и подтвердите свой ответ. –

+0

Ну, я скопирую ваш текст и изменил sdkuserid = 12345 и www. ******/xyz. Но база данных не обновляется. Мне нужно сделать что-нибудь еще –

+0

, что вы будете отправлять по этому атрибуту name = userfile? –

0

Здесь решение:

-(void)uploadImageOnServer:(NSData *)imageData forId:(NSString *)imageId 
{ 
     NSURL *strURL = myUrl; //here is your url 

     // setting up the request object now 
     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; 
     [request setURL:strURL]; 
     [request setHTTPMethod:@"POST"]; 

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

     /* 
     now lets create the body of the post 
     */ 

     NSMutableData *body = [NSMutableData data]; 

     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     NSString *stringData = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"Documents\"; filename=\%@.png\r\n",imageId]; 
     [body appendData: [stringData dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[NSData dataWithData:imageData]]; 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     // setting the body of the post to the reqeust 
     [request setHTTPBody:body]; 

     // now lets make the connection to the web 
     NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
     NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 
     NSLog(@"%@",returnString); 
} 

Здесь «Документы» ваше имя папки, в которой вы хотите сохранить это изображение на бэкэнд сервер. Надеюсь, это поможет вам. Наслаждайтесь!

+0

, что я должен сделать здесь /* теперь позволяет создать тело поста */ –

+0

Вы не должны делать что-либо здесь, это только для инструкции прагма .. просто скопировать и вставьте этот выше код и проверьте на своем сервере. imageId - это просто уникальное имя, например, ссылка на изображение. –

+0

Если вы вызываете эту функцию внутри кнопки действия, то какой параметр мне нужно передать –