Я использую Brightcove API для загрузки видеофайлов с моего сервера на мою учетную запись Brightcove. Я имел это работает со следующим кодом:Curl not posting file in PHP
$fields = array(
'json' => json_encode(array(
'method' => "create_video",
'params' => array(
'video' => array(
'name' => $video->submission_by_name.' '.time(),
'shortDescription' => $video->submission_question_1
),
"token" => $this->config->item('brightcove_write_token'),
"encode_to" => "MP4",
"create_multiple_renditions" => "True"
))
),
'file' => new CURLFile(FCPATH.'assets/uploads/submitted/'.$video->filename)
);
//open connection
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $this->config->item('brightcove_write_endpoint'));
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//execute post
$result = json_decode(curl_exec($ch));
Это работал на местном уровне, однако живой сервер работает PHP 5.3, так что я не могу использовать new CURLFile()
Как бы я добиться отправки файла таким образом, что будет работать с PHP 5.3.3? Я попытался изменить файл, поданную использовать синтаксис @
вместо вроде так:
'file' => '@' . FCPATH.'assets/uploads/submitted/'.$video->filename
, но это не похоже на работу, API возвращает ошибку, говоря:
FilestreamRequiredError: upload requires a multipart/form-data POST with a valid filestream
Так это выглядит как файл не отправляется.
Я также попытался скопировать curl_file_create
функцию, как так:
private function custom_curl_file_create($filename, $mimetype = '', $postname = '')
{
if($mimetype=='') {
$mimetype = mime_content_type($filename);
}
return "@$filename;filename="
. ($postname ?: basename($filename))
. ($mimetype ? ";type=$mimetype" : '');
}
А потом делать:
'file' => $this->custom_curl_file_create(FCPATH.'assets/uploads/submitted/'.$video->filename)
Это не работает либо хотя, API возвращает ту же ошибку, как и раньше