Php 编码百分比在单部分形式中丢失,但在多部分形式中有效?
我在objective C中使用了一个由单个部分组成的HTTPPOST表单来将数据上传到服务器(PHP),然后使用一个单独的多部分post表单来上传文件 出于各种原因,我刚刚决定将其合并为一个单一的、多部分的形式 然而,当在iPhone上使用完全相同的objc时(也就是说,当我注销我发送的内容时,它的编码百分比在两种方式中都是相同的),在服务器上使用完全相同的php时,我意识到,不知怎的,编码百分比的字符串在单部分形式中丢失了它们的编码百分比,而对于多部分形式,保留百分比编码 在单部件形式中,相关部分如下所示:Php 编码百分比在单部分形式中丢失,但在多部分形式中有效?,php,objective-c,forms,encoding,Php,Objective C,Forms,Encoding,我在objective C中使用了一个由单个部分组成的HTTPPOST表单来将数据上传到服务器(PHP),然后使用一个单独的多部分post表单来上传文件 出于各种原因,我刚刚决定将其合并为一个单一的、多部分的形式 然而,当在iPhone上使用完全相同的objc时(也就是说,当我注销我发送的内容时,它的编码百分比在两种方式中都是相同的),在服务器上使用完全相同的php时,我意识到,不知怎的,编码百分比的字符串在单部分形式中丢失了它们的编码百分比,而对于多部分形式,保留百分比编码 在单部件形式中,相
params =[NSString stringWithFormat:@"string=%@", PERCENT_ENCODED_STRING];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
如果我注销参数,编码就在那里
而在多部分形式中,相关部分如下所示
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; //boundary of post data section
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: text/plain; name=%@\r\n", @"string"] dataUsingEncoding:NSUTF8StringEncoding]]; //dataname
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; //blank line
[body appendData:[PERCENT_ENCODED_STRING dataUsingEncoding:NSUTF8StringEncoding]]; //actual data
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; //end of line
...
[request setHTTPMethod:@"POST"];
[request setHTTPBody:body];
php在每种情况下都完全相同
以前有人见过这个吗
我很清楚我可能只是在做一些愚蠢的事情,但我整天都在看这件事,却不知道到底发生了什么
提前谢谢我刚找到这个
还有这个
似乎我所发现的可能是应该发生的事情,原因如下:单部分表单是经过编码的(可能是由另一端的php解码以消除它)。多部分表单不进行编码,因为它们处理的数据量较大,这可能会使它们更长。因此,我假设它们在另一端没有被解码,就像我假设的单部分形式一样
因此,由于我给他们两个已经编码的字符串,php认为它需要解码来自单个部分表单的字符串(因为它不知道编码它的实际上是我,我希望它保持这种方式),而来自多部分表单的字符串保持原样
如果我是从一个非编码字符串开始的,那么在这两种情况下,结果应该是一样的
也许
现在假设这是正确的,我只需要考虑如何处理它(最优雅的解决方案),因为我的应用程序在不同的地方使用单部分和多部分表单,我希望字符串在交给php后保持编码状态