itok's Lab

昔の開発ネタを記録として残してます

iPhotoプラグインを作る「フォト蔵編」-6 : フォト蔵APIヘのアクセス-2 : 写真のアップロード

前回までの NSURLRequest の話を利用して、実際にフォト蔵へ写真をアップロードしてみましょう。使用するAPIphoto_add です。

#define ASCII_DATA(str) [(NSString*)(str) dataUsingEncoding:NSASCIIStringEncoding]

{
    NSURL* apiUrl = [NSURL URLWithString:@"http://api.photozou.jp/rest/photo_add"];
    NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL:apiUrl];
    // Base64エンコーディング
    NSData* baseData = ASCII_DATA(([NSString stringWithFormat:@"%@:%@", username, password]));
    NSString* baseStr = [baseData stringEncodedWithBase64];
    // Basic認証ヘッダ追加
    [req setValue:[NSString stringWithFormat:@"Basic %@", baseStr] forHTTPHeaderField:@"Authorization"];

    // 画像パス
    NSURL* imgUrl = [NSURL fileURLWithPath:imgPath];
    // マルチパート生成 (前回のエントリ参照)
    NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
        album_id,   @"album_id",
        imgUrl,       @"photo",
        nil];
    NSData* formData = [self generateFormData:params boundary:@"___boundary___"];
    [req addValue: @"multipart/form-data; boundary=___boundary___" forHTTPHeaderField: @"Content-Type"];
    [req setHTTPBody:formData];

    // POSTで送信
    [req setHTTPMethod:@"POST"];
    NSURLResponse* res;
    NSData* response = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:nil];
}

これで、各種パラメータを適切に設定できていれば、指定のアルバムに指定の画像ファイルを追加することが出来ます。ここまでくれば、まあ、あともう少しですかね。多分。