过去几天我一直在寻找如何使用 Curl 在 PHP >=5.5 中上传文件。最后我找到了新的 CurlFile 方法,但无法让它与远程 URL 一起使用。这是我正在使用的代码:
$access_token = 'MY_API_ACCESS_TOKEN';
$fields = array(
"name" => $name,
"parent" => array(
"id" => $folder_id
)
);
$another = array(
'attributes' => json_encode($fields),
'file' => new CurlFile($remoteUrl)
);
$header = array (
"Authorization: Bearer $access_token",
"Content-Type: multipart/form-data"
);
$options = array(
CURLOPT_URL => $UPLOAD_URL,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $another,
CURLOPT_HTTPHEADER => $header,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
将
$remoteUrl
替换为本地文件路径时,一切正常。
Q]CurlFile可以远程上传吗?如果是的话我做错了什么?
好吧,我找到了答案:来源
无法使用curl上传远程文件。必须先将文件下载到本地,然后使用CurlFile上传。
在我的例子中也尝试指定 mimeType 和名称:
'file' => new CURLFile($media->sourceUrl(), $media->mimeType(), $media->name())
sourceUrl 指向 S3 url,mimeType 为 video/mp4,名称为 video.mp4