gpt4 book ai didi

Php Curl 发送文件和数组数据

转载 作者:可可西里 更新时间:2023-11-01 13:22:26 26 4
gpt4 key购买 nike

我想用 Curl 发送复杂的 Post 数据。

我尝试发送的数据:

Array
(
[test] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

[file] => CURLFile Object
(
[name] => H:\wwwroot\curl/upload.txt
[mime] =>
[postname] =>
)

)

我需要在后侧使用变量作为 $_POST["test"] 和 $_FILES["file"]但我无法意识到这一点。对于(有时是多维的)数组数据,我需要 http_build_query 但这会破坏文件。如果我不使用 http_build_query,我的数组会出现“数组到字符串转换”错误。

我怎样才能让它工作?代码:

索引.php

$curl = curl_init();

$postValues = Array("test" => Array(1,2,3));
$postValues["file"] = new CurlFile(dirname(__FILE__). "/upload.txt");

curl_setopt($curl, CURLOPT_URL, "localhost/curl/post.php");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postValues);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

$curlResult = curl_exec($curl);
$curlStatus = curl_getinfo($curl);

echo $curlResult;

post.php

print_r($_REQUEST);
print_r($_FILES);

最佳答案

经过很长时间的研究来解决同样的问题,我认为一个更简单的解决方案可能是:

$postValues = Array("test[0]"=> 1, "test[1]"=> 2, "test[2]"=> 3);

这是模拟在浏览器上发生的事情的正确方法

<input type="hidden" name="test[0]" value="1">
<input type="hidden" name="test[1]" value="2">
...

结果是:

Array
(
[test] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

)
Array
(
[file] => Array
(
[name] => upload.txt
[type] => application/octet-stream
[tmp_name] => /tmp/phprRGsPU
[error] => 0
[size] => 30
)

)

关于Php Curl 发送文件和数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731492/

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