【问题标题】:Wistia : Uploading file using curl and phpWistia:使用 curl 和 php 上传文件
【发布时间】:2015-06-11 01:43:45
【问题描述】:

我正在尝试使用 curl 和 php 将 mp4 文件上传到 Wistia 视频托管。但是,即使所有参数似乎都很好,我也会不断收到 500 服务器错误的响应。

这是我进行 curl 调用的代码:

$ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,);
    curl_setopt($ch,CURLOPT_POST, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$params);

    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_HEADER,true);
    //curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));

    $result = curl_exec($ch);

    $responseInfo = curl_getinfo($ch);

    echo '<pre>'; print_r($responseInfo); exit;

$params 数组有两个索引,fileapi_password

我将$params 数组设置为:

$params = array('file'=>'@'.realpath('./wistiatest.mp4'),'api_password'=>'xxx');

它响应以下错误(500):

Array
(
[url] => https://upload.wistia.com/
[content_type] => text/html;charset=utf-8
[http_code] => 500
[header_size] => 717
[request_size] => 186
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.484906
[namelookup_time] => 0.004125
[connect_time] => 0.251725
[pretransfer_time] => 0.781186
[size_upload] => 416
[size_download] => 30
[speed_download] => 20
[speed_upload] => 280
[download_content_length] => 30
[upload_content_length] => 416
[starttransfer_time] => 1.034712
[redirect_time] => 0
[redirect_url] => 
[primary_ip] => 162.209.59.225
[certinfo] => Array
    (
    )

[primary_port] => 443
[local_ip] => 10.28.81.19
[local_port] => 47150
)

我也尝试过设置文件typefilename 参数。但无济于事。

$param = array('file'=>'@'.$file.' ;type=application/octet-stream'.' ;filename=wistiatest.mp4','api_password'=>'xxx');

此外,即使我将数组参数传递给CURLOPT_POSTFIELDS,我也尝试将Content-Type 标头显式设置为multipart/form-data,但这也不起作用。

【问题讨论】:

    标签: php curl wistia


    【解决方案1】:

    当您使用 multipart/form-data 发送 POST 请求时,需要 http_build_query() 函数。您不能简单地在 CURLOPT_POSTFIELDS 中传递 PHP 数组。

    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    

    如果请求仍然不起作用,则您的 POST 参数可能有误。

    可以在这里看到 Wistia 的上传 API; http://wistia.com/doc/upload-api#the_request

    【讨论】:

    • http_build_query 也没有任何区别。
    • 和 Upload api 只需要两个强制值,fileapi_password,我已经输入了它们应该是的
    【解决方案2】:

    尽管我已经通过使用CURLFile 解决了这个问题,但我仍然想知道为什么没有它它就无法工作。 Here 是我找到 CURLFile 的有用示例的地方。

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 2013-03-15
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多