【发布时间】: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