Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Php 如何在不编码所有数据的情况下进行POST呼叫?_Php_File_Http_Encoding_Upload - Fatal编程技术网

Php 如何在不编码所有数据的情况下进行POST呼叫?

Php 如何在不编码所有数据的情况下进行POST呼叫?,php,file,http,encoding,upload,Php,File,Http,Encoding,Upload,我正在尝试模拟一个POST调用/文件上传,这样我就可以通过编程来完成,而不是使用一个笨重过时的应用程序 我尝试的模拟中的表单字段如下所示 <Input Type=text name="data" value="begin+600+%7B_TRACK_NAME_%7D%0D%0AM240S..."> data=begin+600+%7b%5fTRACK%5fNAME%5f%7d%0d%0aM240S... 它不停地上传,而且是分块上传,所以有几十篇这样的帖子 当我尝试从PHP表单

我正在尝试模拟一个POST调用/文件上传,这样我就可以通过编程来完成,而不是使用一个笨重过时的应用程序

我尝试的模拟中的表单字段如下所示

<Input Type=text name="data" value="begin+600+%7B_TRACK_NAME_%7D%0D%0AM240S...">
data=begin+600+%7b%5fTRACK%5fNAME%5f%7d%0d%0aM240S... 
它不停地上传,而且是分块上传,所以有几十篇这样的帖子

当我尝试从PHP表单进行POST调用时,它会发送以下消息

data=begin%2B600%2B%257B_TRACK_NAME_%257D%250D%250AM240S... 
不停地

因此,服务器端自然会对我的愚蠢感到震惊,说我和我所爱的人的坏话,而不是接受文件

有什么想法吗? 嗯,我没有发布代码的原因是因为它实际上只是一个PHP表单帖子。意思如果我只是获取发布的数据并手动发送,而不是以编程方式生成该数据,则会出现相同的错误

但是,如果有帮助的话,我将使用的代码应该是这样的

// Opening the file and loading into the variable $contents

$filename = "sample.mp3";
$handle = fopen($filename,"r");
$contents = fread($handle, filesize($filename));
fclose($handle);

// uu_encoding the string

$uu_string = convert_uuencode($contents);

// the first line BEFORE uu_encoding looks like
//  ID39TTrandomCOMengiTunPGAP0TENiTunes 10.5.1COMhe  
//  (it's an MP3)

// the first line AFTER uu_encoding looks like
//  M240S`@`````0.514,@``"`!R86YD;VT`0T]-```0`&5N9VE4=6Y01T%0

// url_encoding the uu_encoded string    
$url_string = rawurlencode($uu_string);

// the first line after url_encoding looks like
// M240S%60%40%60%60%60%60%600.514%2C...

<form action="target.aspx">
<Input Type=text name="data" value="<? echo $url_string; ?>">
<Input Type=Submit>
</form>
提交后,POST调用如下所示

<Input Type=text name="data" value="begin+600+%7B_TRACK_NAME_%7D%0D%0AM240S...">
data=begin+600+%7b%5fTRACK%5fNAME%5f%7d%0d%0aM240S... 

如果我提交此文件,服务器将响应错误:输入字符串的格式不正确。我认为这是因为服务器希望数据具有特定的格式和长度。因此,我的目标是找出为什么我的数据看起来不像传统的最终数据,第一步是找出为什么我的数据看起来像那样。

如果我正确理解您的问题,您应该使用htmlspecialchars而不是rawurlencode。Urlencode用于HTTP,而不是HTML,而且您的数据似乎已经编码,所以只需对其编码两次


或者,您可以使用cURL从服务器发送帖子,避免HTML表单混乱。

如果我正确理解您的问题,您应该使用htmlspecialchars而不是rawurlencode。Urlencode用于HTTP,而不是HTML,而且您的数据似乎已经编码,所以只需对其编码两次


或者,您可以使用cURL从服务器发送帖子,避免HTML表单混乱。

您的代码是什么样子的?您不能使用urldecode来修复它吗?如果您发布一个不起作用的代码示例以及服务器刺杀您角色的实际错误消息,人们会更好地提供帮助。您的代码是什么看起来像?你不能使用urldecode来修复它吗?如果你发布一个不起作用的代码示例和服务器刺杀你的角色的实际错误消息,人们会更好地提供帮助。这不是很正确。虽然我已经越来越接近一个解决方案,但当前的问题是url_encode实际上并没有将我的+.s转换为%2e,它让它们单独存在。这是。。。也许是问题。PHP手册上说这是设计的,但W3C建议它实际上应该转换这些。这并不完全正确。虽然我已经越来越接近一个解决方案,但当前的问题是url_encode实际上并没有将我的+.s转换为%2e,它让它们单独存在。这是。。。也许是问题。PHP手册说这是设计上的,但是W3C建议它实际上应该转换这些。