데이터, 이미지, txt 파일, pdf 문서 등을 업로드하고 싶습니다. MKNetworkKit을 사용하여 깨끗하게 연결하고 있습니다. 이 프레임 워크의 예제를 가지고 시도해 보겠습니다. 클래스가 파일을 업로드하는 방법과 MKNetworkEngine의 확장 내 proyect에 추가 : 내가 추가 한MKNetworkKit을 사용하여 로컬 서버에서 데이터 업로드하기
#import "MKNetworkOperation.h"
#import "MKNetworkEngine.h"
@interface Uploader : MKNetworkEngine
-(MKNetworkOperation*) uploadFromFile:(NSString*) file
onError:(MKNKErrorBlock) errorBlock;
@end
#import "Uploader.h"
@implementation Uploader
-(MKNetworkOperation*) uploadFromFile:(NSString*) file
onError:(MKNKErrorBlock) errorBlock
{
MKNetworkOperation *op = [self operationWithPath:@"IP:PORT/PROYECT/"
params:nil
httpMethod:@"POST"];
[op addFile:file forKey:@"upload"];
[op setFreezable:YES];
[op onCompletion:^(MKNetworkOperation* completedOperation)
{
NSString *xmlString = [completedOperation responseString];
NSUInteger start = [xmlString rangeOfString:@"<mediaurl>"].location;
if(start == NSNotFound)
{
NSLog(@"%@", xmlString);
errorBlock(nil);
return;
}
xmlString = [xmlString substringFromIndex:start + @"<mediaurl>".length];
NSUInteger end = [xmlString rangeOfString:@"</mediaurl>"].location;
xmlString = [xmlString substringToIndex:end];
}
onError:^(NSError* error)
{
errorBlock(error);
}];
[self enqueueOperation:op];
return op;
}
@end
내가 업로드 파일의 버튼 인터페이스, 그리고 내 컨트롤러 내이 함께하는 방법을 만들었습니다 내용 :
@property (strong, nonatomic) Uploader *sampleUploader;
0 :
-(IBAction)uploadImageTapped:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [paths objectAtIndex:0];
NSString *uploadPath = [NSString stringWithFormat:@"%@/Imagen.jpg",cachesDirectory];
//NSLog(@"%@",uploadPath);
self.uploadOperation = [ApplicationDelegate.sampleUploader uploadFromFile:uploadPath onError:^(NSError* error)
{
[UIAlertView showWithError:error];
}];
}
마지막으로 나는, 응용 프로그램 내 위임에 업 로더 객체를 추가했습니다
및
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; splitViewController.delegate = (id)navigationController.topViewController; //Uploader self.sampleUploader = [[Uploader alloc] initWithHostName:@"http://IP:PORT" customHeaderFields:nil]; return YES; }
내 문제는 .... 난 내 로컬 호스트에 도달 할 수없는, 파일을 업로드 할 수 있습니다 싶어 난 이유를 알고 해달라고
어떤 아이디어입니까 ??? 당신은 제거해야하는 경우
예, 물론 테스트를 거쳤으며 http : //와 동일하지만 동일합니다. – Davidin073
안녕하세요, 저는 현재 인스턴스가 작동 중입니다. 코드와 거의 같습니다. 하지만 'operationWithPath'가 있는데도 매개 변수가 URI처럼 보입니다. 전체 URI를 전달하는 경우 'operationWithString'을 사용해야 할 수도 있습니다. 이것이 도움이되는지 확실하지 않습니다. 추신 : 나는 내 프로젝트에서 코드를 추출 할 수 있어야하고 여전히 작동시키지 못하면 게시하십시오. – RichS