【发布时间】:2012-01-22 09:04:39
【问题描述】:
我正在尝试模拟 POST 调用/文件上传,以便我可以通过编程方式完成,而不是使用笨重过时的应用程序。
我尝试的模拟中的表单字段如下所示
<Input Type=text name="data" value="begin+600+%7B_TRACK_NAME_%7D%0D%0AM240S...">
根据我的HTTP流量分析器,原来的版本是这样的
data=begin+600+%7b%5fTRACK%5fNAME%5f%7d%0d%0aM240S...
(一直在不断,而且是分块上传,所以有几十个这样的帖子)
当我尝试我的 POST 调用(来自 PHP 表单)时,它会发送这个
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 调用如下所示
如果我提交此内容,服务器将响应“错误:输入字符串的格式不正确。”,我认为这是因为服务器期望数据具有一定的格式和长度。所以我的目标是弄清楚为什么我的数据看起来不像传统的“最终”数据,第一步是弄清楚为什么我的数据看起来像那样。
【问题讨论】:
-
你的代码是什么样的?
-
你不能用
urldecode()修复它吗? -
如果您发布不起作用的代码示例以及服务器暗杀您的角色的实际错误消息,人们将能够更好地提供帮助。
标签: php file http encoding upload