这让我抓挠了一段时间。
我正在准备一个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文件返回数组{}。
发布于 2013-08-05 10:10:19
解决办法:
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\";\r\nfilename=\"%@.jpeg\"\r\nContent-Type: image/jpeg\r\n\r\n", key,key] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[NSData dataWithData:imageData]];
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];在我已经包含的数据之后的第一行似乎已经解决了这个问题。
发布于 2013-08-02 15:14:03
UIImageJPEGRepresentation(image, 1.0)返回不能转换为NSString的NSData对象。jpeg不包含有效字符。任意数据不能转换为有效的字符串。UIImageJPEGRepresentation(image, 1.0)返回零,[NSData dataWithData:]调用也确保您附加到postData的数据不是零。[NSData dataWithData:nil];返回一个空的NSData实例,而不是零。您不能将postData转换回NSString。如果要检查图像是否是NSData对象的一部分,可以查看postData的长度。
发布于 2015-05-18 05:18:02
你怎么告诉postData是空的?请注意,您不能使用下面的某些类别/扩展将其转换为UTF8字符串。
extension NSData { func to_string(encoding:UInt = NSUTF8StringEncoding) -> String? { return NSString(data:self, encoding:encoding) as? String } }
https://stackoverflow.com/questions/18019312
复制相似问题