2016-09-27 23 views
1

簽名,這是我對通過插件cloudinary上傳代碼,不幸的是我得到的上傳錯誤......我工作在本地主機上,並在放置該代碼的頁面是add.php頁面Cloudinary如何生成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> 
+0

這是您看到的「無效簽名」錯誤嗎?除了'params_to_sign',我發現你在'url'中傳遞了一些查詢字符串參數。請注意,Cloudinary希望您僅簽署**「params_to_sign」中的內容。 –

回答

0

最近試圖理清這個問題。這裏是簡單的解決方案:

它需要在您的服務器上生成簽名腳本,在這種情況下它是名爲「add.php」的文件。它應該包含這樣的內容:

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

更換[PUT CLOUDINARY API SECRET HERE]與cloudinary API的祕密。

此腳本需要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" 

你的腳本只是URL,在這種情況下, 「http://localhost/add.php」:

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

參數自動添加,當generateSignature函數被調用。