gpt4 book ai didi

PHP cURL - 如何通过 HTTP 请求将变量的内容作为文件上传?

转载 作者:行者123 更新时间:2023-12-05 06:28:26 24 4
gpt4 key购买 nike

“使用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 请求。

感谢您的任何建议。

最佳答案

您可以先将字符串写入/tmp 文件夹中的文件。我不确定,但我认为如果您想发布文件,您可能需要这样做。 documentation说:

7.0.0 Support for disabling the CURLOPT_SAFE_UPLOAD option has been removed. All curl file uploads must use CURLFile.

编辑:请检查 docs on post_max_size :

post_max_size integer

Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize. Generally speaking, memory_limit should be larger than post_max_size...

关于PHP cURL - 如何通过 HTTP 请求将变量的内容作为文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336747/

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