2011-08-12 1 views
0

모두, iOS 용 RestKit을 사용하여 Java 웹 서비스에 JPEG 파일을 업로드하고 있습니다. 나는 파일 업로드 웹 서비스 개발을위한 thisHTTP/1.1 200 213 RESTKit을 사용하여 jpeg 파일을 업로드하는 중 Tomcat에

자습서를 참조했으며 웹 브라우저를 통해 사용할 때 완벽하게 작동합니다.

그러나 RESTKit을 사용하여 파일을 업로드하려고하면 TOMCAT 로그에 HTTP/1.1 200 213 상태 코드가 표시되고 파일이 업로드되지 않습니다.

RKObjectManager* manager = [RKObjectManager sharedManager]; 
RKObjectLoader* objectLoader = [manager objectLoaderWithResourcePath:@"/fileuploaded" delegate:self]; 
objectLoader.method = RKRequestMethodPOST; 

UIImage *image = [UIImage imageNamed:@"rental_car_bill.jpeg"]; 
NSData *imageData = UIImageJPEGRepresentation(image, 1.0); 
// attach image 
RKParams *params = [RKParams paramsWithDictionary:(NSDictionary*)objectLoader.params]; 
RKParamsAttachment *attachment = [params setData:imageData 
             MIMEType:@"image/jpeg" forParam:@"photo"]; 
attachment.fileName = @"samplejpeg"; 
objectLoader.params = params; 
objectLoader.targetObject = self; 
[objectLoader send]; 

편집 : 구현 위 이 작업을 수행하고 파일 업로드됩니까

여기 내 RESTKit 코드입니다. 그러나 위임 메서드에서 : - (void) objectLoader : (RKObjectLoader *) objectLoader didLoadObjects : (NSArray *) objects

이 범위를 벗어난 후 내 응용 프로그램이 [RKObjectLoader dealloc];

- (void) upload: (KFMedia *) pic onLoad:(RKObjectLoaderDidLoadObjectBlock) loadBlock onError:(RKRequestDidFailLoadWithErrorBlock)failBlock{ 

    //pic.image returns an UIImage 
    RKParams* imageParams = [RKParams params]; 
    NSData* imageData = UIImageJPEGRepresentation(pic.image, 0.7f); 
    [imageParams setData:imageData MIMEType:@"image/jpg" forParam:@"FileUpload"]; 
    NSString *resourcePath = @"/api/upload/"; 


    //My API Server will return a JSON that represents my KFMedia Class after uploading the image, so here I get the propper mapping for that 
    RKObjectMapping *mapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[KFMedia class]]; 

    [[RKObjectManager sharedManager] loadObjectsAtResourcePath:resourcePath usingBlock:^(RKObjectLoader *loader) { 
     loader.method = RKRequestMethodPOST; 
     loader.params = imageParams; 
     [self settingsForLoader:loader withMapping:mapping onLoad:loadBlock onError:failBlock]; 

    }]; 

} 

- (void) settingsForLoader: (RKObjectLoader *) loader withMapping: (RKObjectMapping *) mapping onLoad:(RKObjectLoaderDidLoadObjectBlock) loadBlock onError:(RKRequestDidFailLoadWithErrorBlock)failBlock{ 

    loader.objectMapping = mapping; 
    loader.delegate = self; 
    loader.onDidLoadObject = loadBlock; 
    loader.onDidFailWithError = ^(NSError * error){ 
     NSLog(@"%@",error); 
    }; 
    loader.onDidFailLoadWithError = failBlock; 
    loader.onDidLoadResponse = ^(RKResponse *response) { 
     [self fireErrorBlock:failBlock onErrorInResponse:response]; 
    }; 

} 
:

답변

0

, 나는 내 응용 프로그램에 대한 몇 가지 문제를 방지하기 위해 블록을 사용하여 선호하는 나는 다음과 같은 방법을 사용 restkit를 사용하여 사진을 업로드하려면, 어쩌면 그런 식으로 당신은 당신의 사고를 방지 할 수 있습니다