2011-08-12 10 views
0

全部, 我正在使用RestKit for iOS将JPEG文件上传到我的Java Web服务。我提到this在Tomcat上使用RESTKit上传jpeg文件时的HTTP/1.1 200 213

开发文件上传Web服务的教程,当我通过我的Web浏览器使用它时,它工作得很好。

但是,当我尝试上传文件使用RESTKit然后在TOMCAT日志中我得到HTTP/1.1 200 213状态代码,我的文件没有上传。

这里是我的RESTKit代码:

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]; 

编辑: 上述执行方式工作和文件确会上传。但是,在委托方法中: - (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects

当它超出此范围后,我的应用程序在[RKObjectLoader dealloc];

回答

0

要上传使用restkit我用下面的方法照片,我更喜欢使用的块,以避免对我的应用程序的一些问题,也许这样就能避免你的崩溃:

- (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]; 
    }; 

} 
相关问题