有很多关于“使用PHP Curl上传文件”的答案,它们都要求在机器上存在一个物理文件。通过在POST字段中的文件名前引用@符号进行上传。
然而,我已经在PHP变量“$data”中拥有了文件数据:如何直接上传而不需要先写入文件呢?
我尝试了这个:
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => SERVER_URL . '/test.php?abc=def&ghi=jkl',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 120,
CURLOPT_POST => 1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => ['file' => $data],
CURLOPT_HTTPHEADER => ["Content-type: multipart/form-data"],
CURLOPT_HEADER => true,
CURLOPT_INFILESIZE => strlen($data)
]);
$response = curl_exec($ch);
但我的服务器出现了一个错误,即POST内容长度超过了8388608字节的服务器限制。然而,在我的服务器上的php.ini文件中,我已经将upload_max_filesize设置为500M。所以看起来这个POST请求没有被视为多部分文件上传,而是试图将所有文件数据压缩到POST请求中。 感谢任何建议。