1

iOSアプリを開発中です。このアプリは、1 回のリクエストで単一のファイル アップロード オプションと複数のファイル アップロード オプションを提供しています。単一ファイルのアップロードに AFNetworking を使用していますが、これは正常に機能します。ここで、複数ファイルのアップロードをサポートする必要があります。Web から複数のファイルを実際にアップロードする html コードを持っています。iOS アプリから同じことを行う必要があります。AFNetworking を使用して同じことを行う方法を提案できる人はいますか?

<form method="post" action="upload.php?key=ac2a04cc7b6d4420fa5e5eb1701fb0cc1acf7916&channelid=1" enctype="multipart/form-data">
<label>Title:</label> <input name="title" value="My Video Title" /><br />
<label>Date:</label> <input name="date" value="<?php echo time(); ?>" /><br />
<label>Location:</label> <input name="location" value="Sydney, Australia" /><br />
<textarea name="description">The description of the photo/video goes here</textarea><br />
<input name="file[]" type="file" multiple="multiple" /><br />

4

2 に答える 2

8

以下のコードを使用して、複数のファイルをフォームに送信します。何かを変更する必要がある場合は、必要に応じてカスタマイズしてください。

  NSArray *imageArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"close_button.png"],[UIImage imageNamed:@"done_button.png"], nil];
    __block int i=1;
    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:@"yoururl"];
    NSMutableURLRequest *request=nil;
        request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"yoururl" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData)
        {
            for(UIImage *eachImage in imageArray)
            {
                NSData *imageData = UIImagePNGRepresentation(eachImage);
                [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i] fileName:[NSString stringWithFormat:@"abc%d.png",i] mimeType:@"image/png"];
                i++;
            }

        }];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    [httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSData *data = (NSData *)responseObject;
         NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
         NSLog(@"Response -> %@",str);

     } failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         NSLog(@"Error -> %@",[error localizedDescription]);
     }];

サーバー側では、test.php コードで確認しました。print_r($_FILES) を印刷したところ、私の場合は次のように印刷されます。

Response -> Array
(
    [file1] => Array
        (
            [name] => abc1.png
            [type] => image/png
            [tmp_name] => /tmp/phpiWbxSn
            [error] => 0
            [size] => 1997
        )

    [file2] => Array
        (
            [name] => abc2.png
            [type] => image/png
            [tmp_name] => /tmp/phpwtWTE8
            [error] => 0
            [size] => 1847
        )
)

お役に立てれば。

于 2013-04-08T12:28:02.837 に答える
0

AFHTTPNetwrok ソリューションを試しましたが、機能しませんでした。次に、以下のように「名前」キーに角かっこを追加し、最終的に画像が正常にアップロードされました。問題によって私は何をすることができますか?

NSData *imageData = UIImageJPEGRepresentation(img,1);
            [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"images[%d]",i] fileName:[NSString stringWithFormat:@"images%d.jpg",i] mimeType:@"image/jpeg"];
于 2015-08-13T04:12:20.067 に答える