0

特定の URL に画像をアップロードする必要があります。私が従わなければならない仕様は次のとおりです。 1. メソッドは投稿にする必要があります 2. マルチパート HTTP コンテンツ タイプを使用して画像をアップロードする必要があります 3. HTTP フィールドの名前は「uploadingTheFile」にする必要があります。4. マルチパート データにはファイル名が必要です。5. 画像のコンテンツ タイプは、jpeg、jpg、png、gif のいずれかである必要があります。

NSURLConnection を使用して非同期でアップロードしたい。リクエストのパラメータを適切な方法で設定できないと思います。ステータス コード 200 を取得しています。これは、NSURLConnection デリゲート メソッドに問題がないことを示しています。私が試しているコードは次のとおりです。

NSString *stringBoundary=@"0xKhTmLbOuNdArY";
// create request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:url]];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:30];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",stringBoundary] forHTTPHeaderField:@"uploadfile"];


NSMutableData *postBody = [NSMutableData data];
NSData *imageData=UIImagePNGRepresentation([UIImage imageNamed:@"IMG_0215.JPG"]);

//[postBody appendData:imageData];
[postBody appendData:[@"Content-Disposition: form-data; name=\"data;filename=\"media.png\"\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[NSData dataWithData:imageData]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:postBody];

NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
if (connection) {
    self.data = [NSMutableData data];
}
4

3 に答える 3

2

私は次のコードを使用していますが、うまく機能しています。

NSData *imageData = UIImageJPEGRepresentation(empImgView.image, 90); // convert image in NSData
    NSString *urlString = @"http://abc.com/saveimage/Default.aspx"; // your url

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];

    NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
    [request addValue:contentType forHTTPHeaderField:@"Content-Type"];

    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

    NSString *imgNameString = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n",[responseSrting substringWithRange:NSMakeRange(1, responseSrting.length - 2)]];    
    [body appendData:[[NSString stringWithString:imgNameString] dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [request setHTTPBody:body];

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",returnString);
于 2012-12-28T06:52:08.507 に答える
0

ここでは、画像のアップロードにafnetworkingを使用する方法を学ぶことができます

https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ

于 2012-12-28T08:00:22.220 に答える