У меня есть демонстрационная страница с jQuery File Upload, которая в настоящее время позволяет загружать видеофайлы на веб-хостинг через PHP.
Код:
<?
// A list of permitted file extensions
$allowed = array('mov', 'mp4', 'avi');
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
$extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
if(!in_array(strtolower($extension), $allowed)){
echo '{"status":"error"}';
exit;
}
if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
echo '{"status":"success"}';
exit;
}
}
echo '{"status":"error"}';
exit;
?>
Мне нужно, чтобы это демо полностью работало, чтобы загружать видеофайлы в мою галерею Wistia через их API вместо каталога загрузки.
Рабочий фрагмент файла upload.php для API Wistia с URL-адресом видео:
<?
$data = array(
'api_password' => '[password]',
'project_id' => '[project_id]',
'url' => '[video_url]'
);
$wistia = curl_init('https://upload.wistia.com');
curl_setopt_array($wistia, array(
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POSTFIELDS => http_build_query($data)
));
// Send the request
$wistia_request = curl_exec($wistia);
?>
Однако изменение этих значений и использование их в моей форме не работает:
$data = array(
'api_password' => '[password]',
'project_id' => '[project_id]',
'file' => '@' . $_FILES['upl']['name']
);
Как видите, мне нужно руководство и помощь. Любые намеки очень ценятся.
Вот несколько документов для этого проекта:
Решено!
$data = [
'file' => "@{$_FILES['upl']['tmp_name']};filename={$_FILES['upl']['name']};type={$_FILES['upl']['type']}"]
Если вы собираетесь загружать файл напрямую, нет причин перемещать загруженный файл. Вы могли бы просто использовать tmp-файл напрямую.
$data= [
'file' => '@' . $_FILES['upl']['tmp_name']
]
Следующая проблема заключается в том, что вы сейчас загружаете 2 видео. 1 с компьютера пользователя на ваш сервер, а затем один с вашего сервера на Wistia.
Таким образом, вместо того, чтобы позволить пользователю ждать 2 загрузки, вы должны переместить вторую в фоновую задачу.