【发布时间】:2026-02-13 07:15:01
【问题描述】:
我目前有一个允许文件上传的网站。当用户提交表单时,我运行一个 php 脚本向我的 api 发送 curl 请求。
目前php请求是这样的:
$params = array(
'media' => "@" . $_FILES['media']['tmp_name']
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
API 只是检查$_FILES 字段,然后抓取媒体并运行move_uploaded_file。
所以文件直接从用户提交的表单到 curl 到 api 服务器,在到达 api 服务器之前,文件永远不会被实际上传(除了被放置在表单提交和 curl 请求之间的 tmp 文件夹中)。
这一切都适用于将文件上传到 api 服务器,但问题是服务器认为文件的扩展名是 .tmp,而不是像 png 之类的东西,因为那是 curl 请求发送的文件。
如何在不预先上传文件的情况下发送文件,以便 api 服务器知道实际发送的是什么文件?
【问题讨论】:
-
为了清楚起见,
being placed in a tmp folder实际上是指being uploaded to your server。您可以使用它,作为一个选项,您可以阅读它并将其作为字符串发布,请参见此处:*.com/questions/3085990/…
标签: php file-upload curl