2

我目前有一个允许文件上传的网站。当用户提交表单时,我运行一个 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 服务器知道实际发送的是什么文件?

4

1 回答 1

2

两种方式:

  • 重命名 tmp 文件。您可以访问它,因此重命名它很简单:rename(oldname, newname)
  • 发送一个 mimetype。格式为:@filename;type=image/png对于 png。

如果您关心文件名,则首选第一个选项,如果您只关心 mime 类型,则首选选项二。

于 2013-05-17T20:03:50.240 回答