【问题标题】:Reading RAW data from a Flash POST Request ( images )从 Flash POST 请求中读取 RAW 数据(图像)
【发布时间】:2009-12-08 02:52:23
【问题描述】:

我基本上是在与第三方API flash 文件交互以向我的服务器发送 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 密钥。

【问题讨论】:

    标签: php flash http-post raw-post


    【解决方案1】:

    您需要在 php.ini 中设置 always_populate_raw_post_data=1 才能使用 HTTP_RAW_POST_DATA (look 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";
    }
    

    【讨论】:

    • $_FILES 在我尝试时是空白的,也许我会在确认php.ini 设置后再次尝试所有测试。谢谢。
    • 他要求的是 Flash 而不是常规形式,它用于将 Flash 制作图像的快照发送到 PHP,因此他需要先收集该图像并且不能直接使用 $_FILES,@meder:似乎您没有从第三方 API 获取该图像,因此请查看该图像然后需要编辑您的 php.ini 以接收 HTTP_RAW_POST_DATA
    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多