【问题标题】:Trying upload data in Local Server using MKNetworkKit尝试使用 MKNetworkKit 在本地服务器中上传数据
【发布时间】:2012-03-19 10:30:07
【问题描述】:

我要上传数据、图片、txt文件、pdf文件等。 我使用 MKNetworkKit 干净地连接。通过这个框架的例子,我试着去做。 我在我的项目中添加了一个 MKNetworkEngine 的类扩展,其中包含从文件上传的方法:

#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

我在界面中添加了一个上传文件的按钮,并在我的控制器中创建了一个包含此内容的方法:

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

最后,我在我的应用委托中添加了一个 Uploader 对象:

@property (strong, nonatomic) Uploader *sampleUploader;

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

我的问题是我想上传文件,我的本地主机无法访问,我不知道为什么....

有什么想法吗???

【问题讨论】:

    标签: objective-c ios5 network-programming localhost reachability


    【解决方案1】:

    RichS 是对的。您不应在主机名中使用 http(协议)。

    【讨论】:

      【解决方案2】:

      [我在寻求 MKNetworkingKit 帮助时偶然发现了您的问题。]

      快速阅读您的代码,我想知道您是否应该从您的 initWithHostName 中删除“http://”。我确定该工具包在其自己的初始化中添加了“http://”。

      【讨论】:

      • 嗨,我的实例现在可以工作了。它与您的代码几乎相同。但是,我注意到您有“operationWithPath”,但参数看起来像一个 URI。如果您要传入完整的 URI,则可能需要使用“operationWithString”。不确定这是否有帮助。 PS:我应该能够从我的项目中提取我的代码并发布,如果你仍然不能让它工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 2018-09-21
      • 1970-01-01
      • 2020-09-12
      • 2012-01-09
      • 1970-01-01
      相关资源
      最近更新 更多