0

以前はこの方法を使用して画像をサーバーにPOSTしましたが、ヘッダーと境界を自分で追加する必要があるため、少し複雑です。昨日、Restyというプロジェクトを見つけました-「iOSとMac用のシンプルなObjective-CHTTPクライアント」。しかし、すべてのドキュメントを読んだ後、画像ファイルをアップロードする方法が見つかりません。助けてください、どうもありがとう。

NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:@"this is a title" forKey:@"title"];

// ***How can I add an image by Resty?***
[params setObject:UIImageJPEGRepresentation(self.image, 1.0) forKey:@"image"];

LRRestyClient *client = [LRResty client];
[client setUsername:userId password:userToken];
[client post:APIImageUrl payload:params withBlock:^(LRRestyResponse *response){
    NSLog(@"Done");
}];
4

2 に答える 2

0

このフレームワークは画像データとカスタムパラメータを正しく処理しないと思います。このトピックに従って、正しいNSData形式を作成できます。

HTTP POSTを使用して画像とテキストをアップロードするにはどうすればよいですか?

または、個人的にもっと成熟したフレームワークが必要な場合は、restkitにアドバイスします。私のプロジェクトでは、このサンプルコードを使用してRESTサービスに画像を送信します

 RKObjectManager *service = restkit_manager; //initialized previously
      [service loadObjectsAtResourcePath:@"/api/ChangeProfileImage" usingBlock:^(RKObjectLoader *loader) {
            loader.delegate      = self;
            loader.method        = RKRequestMethodPOST;
            loader.cachePolicy   = RKRequestCachePolicyNone;
            loader.objectMapping = (RKObjectMapping *) [service.mappingProvider mappingForKeyPath:MAPPING_PROFILE_IMAGE_UPDATE];

            NSMutableDictionary *params_dict = [NSMutableDictionary new];

           //custom parameters
           [params_dict setValue:UserKey forKey:@"UserKey"];

            RKParams *params = [RKParams paramsWithDictionary:params_dict];
            //encoded image
            [params setData:data MIMEType:@"image/png" forParam:@"FileName"];

            loader.params                = params;
            loader.serializationMIMEType = RKMIMETypeJSON;
        }];

このスライドはアイデアを与えるかもしれませんhttp://www.slideshare.net/tkalapun/restfull-with-restkit

于 2012-08-23T07:38:42.403 に答える
0

私はASIHTTPRequestを使用しています。これは非常にシンプルで強力です。このライブラリを使用することは別の選択肢だと思います。

私のサンプルコードは...

NSURL *url = [NSURL URLWithString:@"http://endpoint"];
NSData *data = [self addMetadata:UIImageJPEGRepresentation(self.image, 1.0)];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[ASIFormDataRequest setDefaultTimeOutSeconds:90];
[ASIFormDataRequest setShouldThrottleBandwidthForWWAN:YES];

[request setNumberOfTimesToRetryOnTimeout:3];
[request setAllowCompressedResponse:NO];

[request setData:data withFileName:@"photo.jpg" andContentType:@"image/jpeg" forKey:@"image"];
[request startSynchronous];
于 2012-08-24T05:52:29.480 に答える