0

我基本上是在与第三方API闪存文件交互以向我的服务器发送 HTTP POST 请求。

我知道我走在了正确的道路上,因为它需要一个crossdomain.xml文件,并且在我添加该部分之前,POST 变量中的任何内容都没有显示,但是由于我添加了该文件,因此设置了 4 个变量,这些 POST 变量被发送由应用程序向我提供有关文件的基本信息.. 但我实际上需要读取 RAW POST 数据才能实际保存 Flash 发送的图像。

我知道有3种方法...

  1. $GLOBALS['HTTP_RAW_POST_DATA']
  2. $HTTP_RAW_POST_DATA which is probably the same as the first
  3. file_get_contents('php://input')

无论出于何种原因,这些“工作”都没有。“工作”是指它们没有被设置,当我 var dump 他们时,我什么也得不到。

可能是php.ini我需要设置一个设置,还是 Flash 应用程序确实没有发送实际图像?我认为它在做正确的事情,因为它是一个半流行的 API,并且被其他几个站点使用,所以我很确定它对他们来说是正确的。

而且它们也不需要任何类型的 API 密钥。

4

1 回答 1

1

您需要always_populate_raw_post_data=1在 php.ini 中设置才能使用HTTP_RAW_POST_DATA看这里)。此外,请确保您设置upload_max_filesize的值对于您的文件来说足够大。

但是,如果 POST 数据被发送为multipart/form-data,则 HTTP_RAW_POST_DATA 将永远无法工作,这通常在发送文件时使用。

除非您以非标准方式发送文件,否则您确实应该使用它$_FILES来检索上传。PHP 自动将文件上传保存到一个临时位置,并将该位置放在$_FILES变量中。您可以使用该move_uploaded_file功能将其移动到您想要的位置。例如:

$place_to_put_the_file = "/my_directory/image.jpg";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 echo "File is valid, and was successfully uploaded.\n";
} else {
 echo "Possible file upload attack!\n";
}
于 2009-12-08T03:13:50.807 回答