UIImageJPEGRepresentation

UIImageJPEGRepresentation

这让我抓了很长时间。

我正在准备将UIImage发布为HTTP request的一部分。我正在使用以下代码执行此操作:

[postData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
                        [postData appendData:[[NSString stringWithFormat:@"Content-Disposition: attachment; name=\"q%@\"; filename=\".jpg\"\r\n" , key] dataUsingEncoding:NSUTF8StringEncoding]];
                        [postData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
                        [postData appendData:[NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)]];
                        [postData appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

我遇到的问题是,运行这些行后,postDatanull

使用NSLog,我发现[postData appendData:[NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)]];是导致这种情况发生的那一行。然后,我继续查看图像是否有问题。 UIImageJPEGRepresentation(image, 1.0)将大量数据输出到控制台,并将图像添加到UIImageView中将显示我期望的.jpg。

我绝对上当了。请帮助>。<
小号

编辑

在下面发生了一些崩溃之后,我意识到它肯定是在发布图像

NSLog(@"postData = %@",[postData length]);

显示280861(字节?),但是带有<?php print_r($_FILES); ?>的PHP文件返回Array {}

最佳答案

  • UIImageJPEGRepresentation(image, 1.0)返回无法转换为NSString的NSData对象。 jpeg不包含有效字符。而且任意数据都不能转换为有效字符串。
  • 即使UIImageJPEGRepresentation(image, 1.0)返回nil,[NSData dataWithData:]调用也可以确保您附加到postData的数据不是nil。 [NSData dataWithData:nil];返回一个空的NSData实例,而不是nil。
  • 关于您的答案。 nil不是有效的字符串编码。编译器应该显示警告,并且您应该在控制台中看到警告“检测到错误的NSStringEncoding值0x0000。假设NSASCIIStringEncoding。将在不久的将来停止这种兼容性映射行为。”。

  • 您不能将postData转换回NSString。如果要检查图像是否是NSData对象的一部分,可以查看postData的长度。

    关于iphone - NSData appendData:UIImageJPEGRepresentation()返回nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18019312/

    10-12 05:39