2014-09-02 6 views
2

Я пытаюсь загрузить фильм в API Wistia CURL (http://wistia.com/doc/upload-api).PHP Curl - Wistia API Загрузить

Он отлично работает с помощью следующей командной строки, но когда я положил его в PHP коде, я просто получаю пустой экран без ответа:

$ curl -i -d "api_password=<YOUR_API_PASSWORD>&url=<REMOTE_FILE_PATH>" https://upload.wistia.com/ 

PHP код:

<?php 
$data = array(
    'api_password' => '<password>', 
    'url' => 'http://www.mysayara.com/IMG_2183.MOV' 
); 



$chss = curl_init('https://upload.wistia.com'); 
curl_setopt_array($chss, array(
    CURLOPT_POST => TRUE, 
    CURLOPT_RETURNTRANSFER => TRUE, 
    CURLOPT_POSTFIELDS => json_encode($data) 
)); 

// Send the request 
$KReresponse = curl_exec($chss); 

// Decode the response 
$KReresponseData = json_decode($KReresponse, TRUE); 

echo("Response:"); 
print_r($KReresponseData); 
?> 

Спасибо ,

+0

1. Вы включили 'display_errors'? 2. Каков размер загружаемого файла и размер размера сообщения в php.ini? 3. Вы даже не проверяете результаты 'curl_exec'. – Raptor

ответ

1

Ваша проблема (и разница между командной строкой и реализацией PHP), вероятно, что вы JSON кодированием данных в PHP, вы должны использовать вместо http_build_query():

CURLOPT_POSTFIELDS => http_build_query($data) 

Для ясности Wistia API говорит returns JSON, но не ожидает его в запросе.

2

Для PHP v5.5.0 или новее, это класс для загрузки в Wistia из файла LOCALLY STORED.

Использование:

$result = WistiaUploadApi::uploadVideo("/var/www/mysite.com/tmp_videos/video.mp4","video.mp4","abcdefg123","Test Video", "This is a video upload demonstration"); 

Класс:

@param $file_path Full local path to the file 
@param $file_name The name of the file (not sure what Wistia does with this) 
@param $project The 10 character project identifier the video will upload to 
@param $name The name the video will have on Wistia 
@param $description The description the video will have on Wistia 

class WistiaUploadApi 
{ 
    const API_KEY   = "<API_KEY_HERE>"; 
    const WISTIA_UPLOAD_URL = "https://upload.wistia.com"; 

    public static function uploadVideo($file_path, $file_name, $project, $name, $description='') 
    { 
     $url = self::WISTIA_UPLOAD_URL; 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_POST, true); 

     $params = array 
     (
      'project_id' => $project, 
      'name'   => $name, 
      'description' => $description, 
      'api_password' => self:: API_KEY, 
      'file'   => new CurlFile($file_path, 'video/mp4', $file_name) 
     ); 

     curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

     //JSON result 
     $result = curl_exec($ch); 

     //Object result 
     return json_decode($result); 
    } 
} 

Если у Вас нет проекта, чтобы загрузить в, оставляя $ проекта пустым, очевидно, не заставит Wistia создать. Он просто потерпит неудачу. Поэтому вам может потребоваться удалить это из массива $ params, если у вас нет проекта для загрузки. Я не экспериментировал, чтобы увидеть, что произойдет, когда вы оставите $ name blank.

Смежные вопросы