2014-02-25 1 views
0

AFnetworking 2.0을 사용하여 단일 이미지를 업로드하는 중입니다. UIImgePhotoLibrary에서 선택한 이미지를 저장하고 NSData에 컨버팅했습니다. 업로드하려고하면 NSData에 데이터가 있음을 알 수 있습니다. 서버에 도달 한 이미지가없고 그저 시간 만에 오류가 반환되는 것을 반환합니다. 지난 며칠 동안이 문제에 관심이 많았는데 정확히 어디에서 기록 되었습니까?NSData 크기가 있지만 이미지가 비어있는 서버에 도달하지 못했습니다.

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 


    UIImage *image =[info objectForKey:UIImagePickerControllerOriginalImage]; 
    NSData *imageData = UIImageJPEGRepresentation(image, 1.0); 

    AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 


    manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
    manager.requestSerializer = requestSerializer; 
    [requestSerializer setValue:@"image/jpg" forHTTPHeaderField:@"Content-Type"]; 
    [requestSerializer setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[imageData length]] forHTTPHeaderField:@"CONTENT_LENGTH"]; 

    [manager POST:@"http://xxxxx.com/appphotos/fileupload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     [formData appendPartWithFileData:imageData name:@"image" fileName:@"image/jpeg" mimeType:@"image/jpeg"]; 
    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"Success: %@", operation.responseString); 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", [error debugDescription]); 
     NSLog(@"Error: %@", [error localizedDescription]); 
     NSLog(@"response :%@",operation.responseString); 
    }]; 



    [picker dismissViewControllerAnimated:YES completion:Nil]; 

} 

어디서 실수한지 알려주시겠습니까? thx in advance

+0

실제로 Charles Connect와 같은 네트워크 분석기로 서버 응답을 보냅니다. – zaph

+0

@Zaph 나는 이미지 콘텐츠를 보여줍니다. – Yohan

+0

당신은 네트워크 분석기를 사용했는데 답장에는 분석 방법/방법이 명시되어 있지 않습니다. 따라서 서버는 POST의 일부 측면을 좋아하지 않으므로 서버 업로드 문서를주의 깊게 읽고 보낸 내용이 정확히 이러한 요구 사항을 충족하는지 검토해야합니다. – zaph

답변

0

나는 사진을 서버에 업로드하는 응용 프로그램을 만들었습니다. 나는 아래의 코드를 포함 시키면 작동 시키지만 서버와 서버는 다를 수 있으므로 서버 문서에서 Zaph가 제안하고 읽어야 할 일을해야 할 수도 있습니다. 즉, 코드를 시도해 보면 어쩌면 운이 좋을지도 모릅니다.

NSMutableString *myString = [[NSMutableString alloc] initWithString:@"http://www.yourdomain.com/yourServerMethodHere/"]; 
    //[myString appendString:@"anyAdditionalURLpartHere"]; 
    NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:myString] 
                   cachePolicy:NSURLRequestUseProtocolCachePolicy 
                  timeoutInterval:60]; 
    [urlRequest setHTTPMethod:@"POST"]; 
    NSString *boundary = @"----WebKitFormBoundaryQkZe6RUJZ2xbzXLB"; 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
    [urlRequest addValue:contentType forHTTPHeaderField: @"Content-Type"]; 
    NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Disposition: form-data; name=\"YOURserverVariableStoringTheIncomingData\" filename=\"image001.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type: image/jpg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[NSData dataWithData:photoData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [urlRequest setHTTPBody:body];