2

데이터, 이미지, 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; 
} 

내 문제는 .... 난 내 로컬 호스트에 도달 할 수없는, 파일을 업로드 할 수 있습니다 싶어 난 이유를 알고 해달라고

어떤 아이디어입니까 ??? 당신은 제거해야하는 경우

답변

0

[. 좀 찾고있는 동안 당신의 질문을 우연히 발견 한이 MKNetworkingKit으로 자신을 도울]

는 신속하게 코드를 통해 읽기, 궁금해 '에 http : //'당신의 initWithHostName에서. 나는 그 키트가 자신의 init 내에 어딘가에 'http : //'를 추가 할 것이라고 확신한다.

+0

예, 물론 테스트를 거쳤으며 http : //와 동일하지만 동일합니다. – Davidin073

+0

안녕하세요, 저는 현재 인스턴스가 작동 중입니다. 코드와 거의 같습니다. 하지만 'operationWithPath'가 있는데도 매개 변수가 URI처럼 보입니다. 전체 URI를 전달하는 경우 'operationWithString'을 사용해야 할 수도 있습니다. 이것이 도움이되는지 확실하지 않습니다. 추신 : 나는 내 프로젝트에서 코드를 추출 할 수 있어야하고 여전히 작동시키지 못하면 게시하십시오. – RichS

1

리치가 맞습니다. 호스트 이름에 http (프로토콜)를 사용하면 안됩니다.

+0

감사합니다 !!!!! 축하합니다! – Davidin073

관련 문제