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