file_get_contents
不采用“r”参数 - 请参阅PHP 手册页:
string file_get_contents ( string $filename [, int $flags...)
有效$flag
值为FILE_USE_INCLUDE_PATH, FILE_TEXT, FILE_BINARY
。
尝试删除“r”标志并重试
编辑- 问题已更新,“r”标志被忽略,因此显然不是问题的根源。
看起来PHP中有一个关于file_get_contents
为 HTTP POST 返回空字符串的错误报告。从错误描述:
file_get_contents('php://input')
(并且file, fopen+fread
)在使用 enctype="multipart/form-data" 提交表单时不返回 POST 数据。
当提交没有指定 enctype 的相同表单时(因此使用默认的“application/x-www-form-urlencoded”),一切正常。
因此,看起来一种解决方法是将指定的表单 enctype 从 更改为multipart/form-data
,这显然不适合图像上传-来自W3 FORM 规范:
内容类型“application/x-www-form-urlencoded”对于发送大量二进制数据或包含非 ASCII 字符的文本效率低下。内容类型“multipart/form-data”应用于提交包含文件、非 ASCII 数据和二进制数据的表单。
进一步编辑
这个错误似乎已在您的 PHP 版本中得到解决。您是否检查过以确保正在读取的缓冲区不是以回车符/换行符开头的?有一个与您在 Sitepoint 上讨论过的问题有些相似的问题。
尝试strlen
在输入上运行,看看长度是多少。