【发布时间】:2019-06-17 14:30:18
【问题描述】:
“使用 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 Content-Length 超出了服务器限制 8388608 字节。但是,在服务器上的 php.ini 文件中,upload_max_filesize = 500M。所以看起来这个 POST 并没有被视为分段文件上传,而是试图将所有文件数据塞进 POST 请求中。
感谢您的建议。
【问题讨论】:
标签: php curl post file-upload php-curl