gpt4 book ai didi

php - 使用 API PUT 请求上传文件

转载 作者:IT王子 更新时间:2023-10-28 23:58:25 26 4
gpt4 key购买 nike

我正在用 PHP 构建一个 API。其中一种方法是 place.new(PUT 请求)。它需要几个字符串字段,并且还需要一个图像。但是我无法让它工作。使用 POST 请求很容易,但我不确定如何使用 PUT 以及如何在服务器上获取数据。

感谢您的帮助!

测试 CURL 代码

$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($curl, CURLOPT_URL, $this->url);

curl_setopt($curl, CURLOPT_PUT, 1);
curl_setopt($curl, CURLOPT_INFILE, $image);
curl_setopt($curl, CURLOPT_INFILESIZE, filesize($image));

$this->result = curl_exec($curl);
curl_close($curl);

服务器代码

if ( $im_s = file_get_contents('php://input') )
{
$image = imagecreatefromstring($im_s);

if ( $image != '' )
{
$filename = sha1($title.rand(11111, 99999)).'.jpg';
$photo_url = $temp_dir . $filename;
imagejpeg($image, $photo_url);

// upload image
...
}
}

解决方案

发送

// Correct: /Users/john/Sites/....
// Incorrect: http://localhost/...
$image = fopen($file_on_dir_not_url, "rb");

$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_PUT, 1);
curl_setopt($curl, CURLOPT_INFILE, $image);
curl_setopt($curl, CURLOPT_INFILESIZE, filesize($file_on_dir_not_url));

$result = curl_exec($curl);
curl_close($curl);

接收

/* Added to clarify, per comments */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen($photo_url, "w");

/* Read the data 1 KB at a time
and write to the file */
while ($data = fread($putdata, 1024))
{
fwrite($fp, $data);
}

/* Close the streams */
fclose($fp);
fclose($putdata);

最佳答案

您是否阅读了http://php.net/manual/en/features.file-upload.put-method.php ? Script PUT/put.php全部设置好了吗?

另外,$image 是什么——它必须是文件处理程序,而不是文件名。

附言。使用 file_get_contents 将尝试将服务器上的任何内容加载到内存中。不是一个好主意。请参阅链接的手册页。

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

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