Cloudinary如何在php中生成签名

时间:2016-09-27 20:22:25

标签: javascript php jquery ajax cloudinary

这是关于通过小部件进行cloudinary上传的代码,不幸的是我收到了上传错误...我正在使用localhost,并且放置此代码的页面是add.php页面

<script src="//widget.cloudinary.com/global/all.js" type="text/javascript"></script>
<script type="text/javascript">
  var generateSignature = function(callback, params_to_sign){
    $.ajax({
      url     : "http://localhost/add.php?public_id=sample_image&timestamp=1315060510",
      type    : "GET",
      dataType: "text",
      data    : { data: params_to_sign},
      complete: function() {console.log("complete")},
      success : function(signature, textStatus, xhr) { callback(signature); },
      error   : function(xhr, status, error) { console.log(xhr, status, error); }
    });
  }
</script>


    <script type="text/javascript">  
      $('#upload_widget_opener').cloudinary_upload_widget(
        { cloud_name: 'dammiunparere', api_key: '189XXXX42445355',
          upload_signature: generateSignature},

        function(error, result) { console.log(error, result) });
    </script>

1 个答案:

答案 0 :(得分:0)

最近试图解决这个问题。这是一个简单的解决方案:

它需要在您的服务器上有脚本来生成签名,在这种情况下,它是名为&#34; add.php&#34;的文件。它应该包含类似的内容:

<?php
    define('CINCDIR', './inc/cloudinary/'); // path to cloudinary lib folder

    require_once(CINCDIR . 'Cloudinary.php');
    require_once(CINCDIR . 'Api.php');

    if(isset($_GET['data']))
    {
        echo \Cloudinary::api_sign_request($_GET['data'], '[PUT CLOUDINARY API SECRET HERE]');
    }
?>

用您的cloudinary api secret替换 [PUT CLOUDINARY API SECRET HERE]

此脚本需要cloudinary的PHP集成库。您应该可以从以下链接下载它: https://github.com/cloudinary/cloudinary_php/tarball/master。 将所有文件从src文件夹复制到PHP项目中,并在代码中包含Cloudinary的PHP类:

require_once(CINCDIR . 'Cloudinary.php');
require_once(CINCDIR . 'Api.php');

此外,关于上述示例中的JavaScript,您不需要在此处传递预定义参数:

url     : "http://localhost/add.php?public_id=sample_image&timestamp=1315060510"

您的脚本的网址,在这种情况下,它是&#34; http://localhost/add.php&#34;:

url     : "http://localhost/add.php"

调用generateSignature函数时自动添加参数。