如何在iPhone SDK中将NSData转换为字符串?

| 我正在开发一个iPhone应用程序,其中相机图像存储在
NSData
UIImageJPEGRepresentation
中,现在我想将此NSData转换为字符串。细读之后,我发现base64将执行此操作。 我想知道,如果我将其编码为base64,然后将其发送到php服务器,则可以对其进行解码并转换为Image。 我首先在这里问如何将具有坐标和图像描述的图像发送到php服务器,但是我无法得到响应,所以现在我想将图像转换为base64,然后将其发送到具有坐标和图像描述的php服务器。 希望有人知道解决方案!     
已邀请:
这对我来说听起来不好。一些http客户端为图像上传提供了很好的支持。看一下ASIHttpRequest。您可以将数据保存到临时文件,然后上传该文件。我以前没有使用过addData方法,看起来您可以直接上传NSData对象。 ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:url]; [为关键字:@ \“名称\”请求addPostValue:@ \“ Ben \”]; [为关键字:@ \“名称\”请求addPostValue:@ \“ George \”]; [为key:@ \“ photos \”请求addFile:@ \“ / Users / ben / Desktop / ben.jpg \”]; [[使用FileName:@ \“ george.jpg \”和ContentType:@ \“ image / jpeg \” forKey:@ \“ photos \”请求addData:imageData];     
看下面的URL。它可能会给您您想要的东西。 http://www.iphonedevsdk.com/forum/iphone-sdk-development/49247-posting-image-web-server-using-soap.html     
Base64是一种标准,包括PHP在内的大多数语言都支持,因此可以使用。 但这可能不是最佳方法,因为base64将有效负载大小增加了33%。您应该考虑将其作为二进制而不是字符串发送,这也将更好地支持流传输,并且将使用更少的内存并在客户端和服务器上更快地工作。 只应在较小的数据上或没有更好的选择时使用base64。     
按照此代码将图像和变量发送到服务器-
// Implement this method in your code to do something with the image.
- (void)useImage:(UIImage*)theImage
{
    /*
     turning the image into a NSData object
     getting the image back out of the UIImageView
     setting the quality to 90
     */

    NSData *imageData = UIImageJPEGRepresentation(theImage, 90);
    // setting up the URL to post to


    NSString *urlString=[SiteUrl    stringByAppendingString:@\"iphone_upload_photo.php?type=colleague&token=\"];
    urlString=[urlString stringByAppendingString:PublicToken];





    // setting up the request object now
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@\"POST\"];

    /*
     add some header info now
     we always need a boundary when we post a file
     also we need to set the content type

     You might want to generate a random boundary.. this is just the same

     */
    NSString *boundary = [NSString stringWithString:@\"---------------------------14737809831466499882746641449\"];
    NSString *contentType = [NSString stringWithFormat:@\"multipart/form-data; boundary=%@\",boundary];
    [request addValue:contentType forHTTPHeaderField: @\"Content-Type\"];

    /*
     now lets create the body of the post
     */
    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@\"\\r\\n--%@\\r\\n\",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@\"Content-Disposition: form-data; name=\\\"userfile\\\"; filename=\\\"ipodfile.jpg\\\"\\r\\n\"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@\"Content-Type: application/octet-stream\\r\\n\\r\\n\"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@\"\\r\\n--%@--\\r\\n\",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    // setting the body of the post to the reqeust
    [request setHTTPBody:body];

    // now lets make the connection to the web
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    [self LoadContent];



}
    

要回复问题请先登录注册