我目前有一个允许文件上传的网站。当用户提交表单时,我运行一个 php 脚本,将 curl 请求发送到我的 api。
目前,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 服务器,文件永远不会被实际上传(除了被放置在表单提交和 curl 请求之间的 tmp 文件夹中),直到它到达 api 服务器。
这一切都适用于将文件上传到 api 服务器,但问题是服务器认为文件的扩展名是 .tmp,而不是像 png 之类的东西,因为这是 curl 请求发送的文件。
如何在不预先上传文件的情况下发送文件,以便 api 服务器知道实际发送的是什么文件?