0

事前に感謝します..私のアプリでは、画像をサーバーにアップロードする必要があります。以下は私のコードです。応答が得られるので、コードは正常に動作していますが、問題は、サーバー側の画像がただ黒であることです。

sessionid=[[[NSUserDefaults standardUserDefaults] valueForKey:@"SessionID"]objectAtIndex:0];
  NSLog(@" ID = %@",sessionid);

NSData *da = [NSData data];

da = UIImagePNGRepresentation(self.Profilepic);
 NSString *imgStr = [da base64Encoding];
 NSLog(@" %d", imgStr.length);
  NSString *serverscriptpath=[NSString stringWithFormat:@"http://c4ntechnology.com/biker/web_services/ws_insert_register3.php?"];
    NSString *post =[[NSString alloc] initWithFormat:@"profile_pic=%@&sessionid=%@",imgStr,sessionid];

    NSLog(@"post string is :%@",post);


    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    NSLog(@"post length is :%@",postLength);
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

    NSString *script_path=[NSString stringWithFormat:@"%@",serverscriptpath];
    [request setURL:[NSURL URLWithString:script_path]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];


    NSLog(@"%@",script_path);

    NSData *serverReply = [NSURLConnection  sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString* responseString = [[[NSString alloc] initWithData:serverReply encoding: NSUTF8StringEncoding] autorelease];
    NSDictionary *dict = [responseString JSONValue];

    NSLog(@"%@",dict);

    [self ReceivedResponse:dict];

    -(void)ReceivedResponse:(NSDictionary *)d
     {
     [AlertHandler hideAlert];
      NSLog(@"%@",d);
     }

サーバーの画像が黒いのはなぜですか?私はbase64に変換するためにNSDatAdditions.hファイルを使用しています。

私が使用しているとき

       NSData *imageData = UIImageJPEGRepresentation(Profilepic, 1.0);

サーバー側では、ファイルの発生はサポートされていないため、使用しました

       NSData *da = [NSData data];
       da = UIImagePNGRepresentation(self.Profilepic);
4

1 に答える 1

0

NSUTF8StringEncodingの代わりに使用してみてくださいNSASCIIStringEncoding(Web サーバーが ASCII エンコーディングを使用していることが確実でない限り)。

これがうまくいかない場合は、次のことを試してみます。

  1. 画像を base 64 としてエンコードし、その後デコードして、結果が問題ないかどうかを確認します。
  2. 1 つがパスした場合、サーバーが受信したものを正確に確認します (送信したものと同じ base64 文字列である必要があります。そうでない場合は、異なるエンコーディングに問題がある可能性があります)。

余談da = [NSData data];ですが、すぐに上書きするので使い物にならないのでそのまま使ってくださいNSData *da = UIImagePNGRepresentation(self.Profilepic);

于 2013-08-31T07:57:43.417 に答える