gpt4 book ai didi

php - 使用 curl 上传多个文件

转载 作者:搜寻专家 更新时间:2023-10-31 21:00:21 24 4
gpt4 key购买 nike

如何使用 CURLFilecurl_setopt 上传数组中的多个文件?

使用数据数组会引发错误(无法将数组转换为字符串),并且数据上的 http_build_query 会损坏 CURLFile 对象。

我必须上传的数据如下所示:

[
'mode' => 'combine',
'input' => 'upload',
'format' => $outputformat,
'files' => [
[0] => CURLFile object,
[1] => CURLFile object,
[x] => ...
]
]

最佳答案

PHP 5.5+ 具有无需使用 CURLFile 即可创建文件的功能:curl_file_create .

您可以像这样上传多个文件:

<?php

$files = [
'/var/file/something.txt',
'/home/another_file.txt',
];

// Set postdata array
$postData = ['somevar' => 'hello'];

// Create array of files to post
foreach ($files as $index => $file) {
$postData['file[' . $index . ']'] = curl_file_create(
realpath($file),
mime_content_type($file),
basename($file)
);
}

$request = curl_init('https://localhost/upload');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $postData);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($request);

if ($result === false) {
error_log(curl_error($request));
}

curl_close($request);

这将作为 file 下的数组在服务器上接收,就像有一个已发布的表单一样,这是 $_FILES:

Array
(
[file] => Array
(
[name] => Array
(
[0] => 1.txt
[1] => 2.txt
)

[type] => Array
(
[0] => text/plain
[1] => text/plain
)

[tmp_name] => Array
(
[0] => /private/var/folders/cq/7262ntt15mqdmylblg9p1wf80000gn/T/phpp8SsKD
[1] => /private/var/folders/cq/7262ntt15mqdmylblg9p1wf80000gn/T/php73ijEP
)

[error] => Array
(
[0] => 0
[1] => 0
)

[size] => Array
(
[0] => 6
[1] => 6
)

)

)

这是$_POST:

Array
(
[somevar] => hello
)

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

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