0

こんにちは、次のコードを含む Mac アプリケーションがあります。

 NSURL *url;
        url = [NSURL URLWithString:@"http://yfrog.com/api/xauth_upload"];

        ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];

        [request setDelegate:self];
        [request setUseCookiePersistence:NO];
        [request setUploadProgressDelegate:self];
        [request showAccurateProgress]; 
        [request signRequestWithClientIdentifier:@"w" secret:@"x" tokenIdentifier:@"y" secret:@"z" usingMethod:ASIOAuthHMAC_SHA1SignatureMethod];
        [request setPostValue:@"a" forKey:@"key"];
    NSData *imageData = [[NSData alloc]initWithContentsOfFile:[draggedFilenames objectAtIndex:0]];
    [request setPostValue:imageData forKey:@"media"];

        [request startAsynchronous]; 

しかし、問題は、yfrog サーバーから常に次の応答を受け取ることです。

そのため、画像のアップロードに問題があります。iPhone では、次のように動作します。

[request setData:UIImageJPEGRepresentation(picture, 0.8) withFileName:@"filename.jpg" andContentType:@"image/jpeg" forKey:@"media"];

しかし、これは UIIMageJPEGRepresentation のようなメソッドがないため、cocoa(mac) では機能しません。認証も機能しますが、これが問題になることはありません。このメソッド signRequestWithClientIdentifier について尋ねると、それはここからの asihttprequest+oauth ラッパーからのものです: https://github.com/keybuk/asi-http-request-oauth

では、どうすれば画像を正しくアップロードできますか?

本当にありがとう。

4

1 に答える 1

2
NSData* NSImageJPEGRepresentation(NSImage* image, CGFloat compressionQuality)
{
    if(nil == image)return nil;
    NSDictionary *dict;
    dict = [NSDictionary dictionaryWithObjectsAndKeys:
            [NSNumber numberWithFloat:compressionQuality],
            NSImageCompressionFactor,
            nil];

    NSBitmapImageRep* imageRep;
    imageRep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];
    return [imageRep representationUsingType:NSJPEGFileType 
                                  properties:dict];
}
于 2012-07-07T15:56:08.303 に答える