从Flash POST请求中读取RAW数据(图像)

时间:2009-12-08 02:52:23

标签: php flash http-post raw-post

我基本上与第三方API Flash文件进行交互,以便向我的服务器发送HTTP POST请求。

我知道我的路径有点正确,因为它需要一个crossdomain.xml文件,在我添加该部分之前,POST变量中没有任何内容出现,但是因为我添加了该文件,所以有4个变量设置后,这些POST变量由应用程序发送给我关于文件的基本信息..但实际上我需要读取RAW POST数据以实际保存Flash发送的图像。

我知道有三种方法......

  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')
  4. 无论出于何种原因,这些都不起作用。通过“工作”我的意思是他们没有被设置,当我转储它们时我什么都没有。

    是否需要设置php.ini中的设置,或者Flash应用程序是否真的没有发送实际图像?我认为这是正确的做法,因为它是一个半流行的API,它被其他几个网站使用,所以我很确定它是正确的。

    他们也不需要任何类型的API密钥。

1 个答案:

答案 0 :(得分:1)

您需要在php.ini中设置always_populate_raw_post_data=1以使用HTTP_RAW_POST_DATAlook here)。另外,请确保将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";
}