【问题标题】:jQuery File Upload with Wistia API使用 Wistia API 上传 jQuery 文件
【发布时间】:2015-07-07 07:11:07
【问题描述】:

我有一个带有 jQ​​uery 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;
?>

我需要这个演示完全可以通过他们的 API 而不是上传目录将视频文件上传到我的 Wistia 画廊。

使用 sn-p 将文件上传到带有视频 URL 的 Wistia API:

<?
$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']
);

如您所见,我需要指导和帮助。非常感谢任何提示。

以下是该项目的一些文档:

http://wistia.com/doc/upload-api

https://github.com/blueimp/jQuery-File-Upload

【问题讨论】:

  • "但是更改这些值并在我的表单中使用它不起作用:" 什么不起作用?你得到什么样的错误?
  • 你可以采取另一种方法...你为什么不把你的文件上传到你的服务器,把你的文件 url 发送到 wistia api,一旦 wistia 没问题,从你上传的文件中删除文件文件夹...
  • 嘿@Artmann。 :) 作为 Wistia API 的响应,我收到内部服务器错误。
  • @RobertRozas 这个想法闪过我的脑海,我宁愿避免它,因为我必须支付额外的存储和数据费用,尤其是当它是大型视频文件时。
  • 如果你改用'file' =&gt; '@' . $_FILES['upl']

标签: javascript php jquery file-upload wistia


【解决方案1】:

如果您要直接上传文件,则没有理由移动上传的文件。您可以直接使用 tmp 文件。

$data= [
  'file' => '@' . $_FILES['upl']['tmp_name']
]

下一个问题是您现在正在上传 2 个视频。 1 从用户计算机到您的服务器,然后从您的服务器到 Wistia。 因此,与其让用户等待两次上传,不如将第二次上传到后台任务中。

【讨论】:

  • User->Server->Wistia 是唯一的方法还是 User->Wistia 可能? User->Server 和 Server->Wistia 是我可以做但宁愿避免的事情。
  • 嗯,您可以通过 javascript 将视频文件直接提交到 Wistia,但问题是它会将您的 Wistia 凭据暴露给全世界以及一系列 CORS 问题。
  • 是的。我现在只使用 html 上传并使用 api_password 隐藏输入,它可以工作,但不是很实用。无法真正理解为什么它不能与 curl 一起正常工作时与 PHP 一起工作。
【解决方案2】:

解决了!

$data = [
   'file' => "@{$_FILES['upl']['tmp_name']};filename={$_FILES['upl']['name']};type={$_FILES['upl']['type']}"
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2014-05-04
    • 2016-01-11
    • 2015-02-18
    相关资源
    最近更新 更多