Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSData appendData:UIImageJPEGRepresentation()返回零_Iphone_Ios_Objective C_Nsdata - Fatal编程技术网

Iphone NSData appendData:UIImageJPEGRepresentation()返回零

Iphone NSData appendData:UIImageJPEGRepresentation()返回零,iphone,ios,objective-c,nsdata,Iphone,Ios,Objective C,Nsdata,这让我抓挠了好一阵子 我正在准备一个UIImage作为HTTP请求的一部分发布。我使用以下代码执行此操作: [postData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [postData appendData:[[NSString stringWithFormat:@"Content

这让我抓挠了好一阵子

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

[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
我发现
[postdataappenddata:[nsdatadatawithdata:uiimagejpegresentation(image,1.0)]是导致此情况发生的行。然后我继续查看图像是否是问题所在
UIImageJPEGresentation(image,1.0)
将大量数据输出到控制台,并将图像添加到
UIImageView
显示我所期望的.jpg

我完全被迷惑了。请帮助><

编辑

在经历了下面的一点失败之后,我意识到它肯定是在发布图片 .

显示280861(字节?),但带有
的PHP文件返回数组
{}

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

  • 即使
    uiimagejpegresentation(image,1.0)
    返回nil,调用
    [NSData dataWithData::
    也会确保附加到postData的数据不是nil<代码>[NSData DATA WITHDATA:nil]
  • 关于你的回答。nil不是有效的字符串编码。编译器应该显示一条警告,并且您应该在控制台中看到一条警告“检测到错误的NSStringEncoding值0x0000。假设NSASCIIStringEncoding。将在不久的将来停止此兼容性映射行为。”

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

    通过以下方式解决:

    [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]];
    

    我已经包含的数据之后的第一个换行符似乎已经解决了这个问题

    您是如何告诉
    postData
    为空的?请注意,您不能使用以下类别/扩展将其转换为UTF8字符串

    
    扩展NSData{
    func to_string(编码:UInt=NSUTF8StringEncoding)->string{
    将NSString(数据:self,编码:encoding)返回为?字符串
    }
    }
    

    如何创建
    postData
    实例?NSString jsonString=[[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];NSStringpost=[NSString stringWithFormat:@“&json=%@”,jsonString];NSMutableData*postData=[NSMutableData dataWithData:[post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]];UIImage*image=xxxxx刚刚注意到这是ASCII,其余是UTF8。我改变了这一点,但并没有改进,只是为了实验:改为尝试UIImagePNGRepresentation。我已经尝试过了,同样的结果:(好的,谢谢你的澄清。不过我仍然有这个脚本的问题。我有一个PHP脚本,它只执行
    ,返回一个空数组。这意味着数据仍然没有正确发布。我将在OP中发布我的完整代码。)
    [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]];