データ、画像、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が到達できないと私はなぜ....
任意のアイデアを知りません?
はい、もちろん、私はhttp://でテストしていますが、同じです。 – Davidin073
こんにちは、私のインスタンスは今働いている。これはあなたのコードとほとんど同じです。しかし、私はあなたが 'operationWithPath'を持っていることに気付きましたが、パラメータはURIのように見えます。完全なURIを渡す場合は、 'operationWithString'を使用する必要があります。これが役立つかどうかはわかりません。 PS:私のプロジェクトからコードを抽出して、それがまだ動作しない場合は投稿できるはずです。 – RichS