这让我挠了好久。
我正在准备 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]];
我遇到的问题是 postData
是null
在运行这些行之后。
使用 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 文件返回数组 {}
.
最佳答案
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 附加数据 : UIImageJPEGRepresentation() returns nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019312/