PHP 5.5+提供了一个不使用CURLFile来创建文件的函数: curl_file_create
。
您可以像这样上传多个文件:
<?php
$files = [
'/var/file/something.txt',
'/home/another_file.txt',
];
$postData = ['somevar' => 'hello'];
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
)
files [0] => CURLFile Object,files [1] => CURLFile Object,...
),但是curl_exec
运行直到超时... - Sébastien