微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将文件上传到PHP的Curl PUT请求

我正在尝试使用HTTP PUT上传文件.
看了一下后,似乎$_FILES数组只有POST和multipart / form-data.使用PUT时,我需要手动读取PHP://输入以获取数据.两种方法都不起作用.

我尝试了以下选项,并感谢您提供的任何提示

curl --upload avatar.jpg http://api.test.com/user/dsadasdsa
curl -X PUT -F "[email protected]" http://api.test.com/user/dsadasdsa

我的PHP文件试图打印这个但返回一个空字符串:

echo file_get_contents("PHP://input");

我开始认为这可能是一个Nginx问题,缺少PUT DELETE支持并安装了Nginx-extras以及将以下内容添加到我的Nginx配置中但不幸的是这也无济于事.

root /var/www/;

dav_methods PUT DELETE MKCOL copY MOVE;

create_full_put_path on;
dav_access group:rw all:r;

解决方法:

我有一些调试的想法.

一个var_dump(file_get_contents(‘PHP:// input’));而不是回声.根据reference

This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more @R_803_4045@ion. Use the === operator for testing the return value of this function.

如果你得到一个bool(false)作为输出,那就有一些错误会导致你无法读取PHP://输入 – 很可能是一个PHP问题.如果你得到字符串(0)“”,那么在PHP://输入中没有任何东西(不再是?),这使得它更有可能是一个Nginx问题.

另外,根据php:// reference,你不能使用带有enctype =“multipart / form-data”的PHP://输入.你确定你不使用那个吗?如果更熟悉,您也可以尝试HTML文件.

您也可以认检查错误日志/var/log/Nginx/error.log.另外,检查HTTP响应代码.是200吗?如果没有,这是一个有用的代码吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐