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

私の問題は、私はファイルをアップロードすることができますしたいことを、私のlocalhostが到達できないと私はなぜ....

任意のアイデアを知りません?

答えて

0

[私はいくつか探しながら、あなたの質問に出くわしましたがMKNetworkingKitで自分自身を助ける。]すばやくコードを読ん

あなたは「のhttp://」を削除する必要がある場合、私は疑問に思うあなたのinitWithHostNameから。私はキットが独自のinitのどこかに 'http://'を追加すると確信しています。

+0

はい、もちろん、私はhttp://でテストしていますが、同じです。 – Davidin073

+0

こんにちは、私のインスタンスは今働いている。これはあなたのコードとほとんど同じです。しかし、私はあなたが 'operationWithPath'を持っていることに気付きましたが、パラメータはURIのように見えます。完全なURIを渡す場合は、 'operationWithString'を使用する必要があります。これが役立つかどうかはわかりません。 PS:私のプロジェクトからコードを抽出して、それがまだ動作しない場合は投稿できるはずです。 – RichS

1

リッチです。ホスト名にhttp(プロトコル)を使用しないでください。

+0

ありがとう!!!!!あなたのフレームワークのおめでとう!!!! – Davidin073

関連する問題