gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:03:38 30 4
gpt4 key购买 nike

我正在尝试使用 HTTP PUT 上传文件。
稍微阅读后,似乎 $_FILES 数组仅适用于 POST 和 multipart/form-data。使用 PUT 时,我需要手动读取 php://input 来获取数据。这两种方法都行不通。

我尝试了以下选项,如果您有任何提示,我将不胜感激:

curl --upload avatar.jpg http://api.test.com/user/dsadasdsa
curl -X PUT -F "filedata=@avatar.jpg" 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')); 而不是 echo。根据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 information. Use the === operator for testing the return value of this function.

如果您得到一个 bool(false) 作为输出,则说明有问题导致您无法读取 php://input - 很可能是 PHP 问题。如果您得到 string(0) "",则 php://input 中什么也没有(还有吗?),这更有可能是 nginx 问题。

此外,根据 php:// reference ,您不能将 php://inputenctype="multipart/form-data" 一起使用。你确定你不用那个?如果您更熟悉 HTML 文件,您也可以试试。

您还可以查看错误日志,默认为/var/log/nginx/error.log。此外,检查 HTTP 响应代码。是200吗?如果没有,它是有用的代码吗?

关于php - 将文件上传到 PHP 的 Curl PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012173/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com