我目前有一个允许文件上传的网站。当用户提交表单时,我运行一个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
。
因此文件直接从用户提交的表单卷曲到api服务器,文件从未实际上传(除了在表单提交和curl请求之间放置在tmp文件夹中),直到它到达api服务器。
这一切都适用于将文件上传到api服务器,但问题是服务器认为文件的扩展名是.tmp,而不是类似png,因为这是curl请求发送的文件。 / p>
如何在不先预先上传文件的情况下发送文件,以便api服务器知道实际发送的文件是什么?
答案 0 :(得分:2)
两种方式:
rename(oldname, newname)
@filename;type=image/png
用于png。如果您关心文件名,请选择第一个选项,如果您只关心mime类型,请选择第二个选项。