iphone - NSData 附加数据 : UIImageJPEGRepresentation() returns nil

标签 iphone ios objective-c nsdata

这让我挠了好久。

我正在准备 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。

我完全被蒙蔽了。请帮忙>.< S

编辑

经过下面的一些失败后,我意识到它肯定是在发布图像 .

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

显示 280861(字节?)但是一个带有 <?php print_r($_FILES); ?> 的 PHP 文件返回数组 {} .

最佳答案

  1. UIImageJPEGRepresentation(image, 1.0) 返回无法转换为 NSString 的 NSData 对象。 jpeg 不包含有效字符。并且无法将任意数据转换为有效的字符串。

  2. 即使 UIImageJPEGRepresentation(image, 1.0) 返回 nil,[NSData dataWithData:] 调用也会确保您附加到 postData 的数据不为 nil . [NSData dataWithData:nil]; 返回一个空的 NSData 实例,而不是 nil。

  3. 关于您的回答。 nil 不是有效的字符串编码。编译器应该显示警告,您应该在控制台中看到警告“检测到不正确的 NSStringEncoding 值 0x0000。假设 NSASCIIStringEncoding。将在不久的将来停止此兼容性映射行为。”。

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

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

相关文章:

IOS:UITabbar item click again and it is reducing the UITabbar button item size in IOS 7

iPhone 指南针显示错误的航向俯仰角 > 约 45°

ios - 您如何在 Storyboard 中获取 UISearchbar 的结果并在另一个视点中使用这些结果?

iphone - 如何按升序比较包含日期的 NSString 数组

objective-c - 如何使用 CUPS 查找打印机 URI

iphone - 在 viewDidUnload 中调用 [self <>] 安全吗?

iphone - 适用于iPhone 5和iPhone 4的CGRectMake

ios - IOS : flex direction column overlapping elements 中的 flexbox 布局

ios - Objective C 电子邮件已发送确认

ios - SWRevealViewController 委托(delegate)未触发