signed direct upload with ruby on rails and upload widget
Trying to send a signed upload, the widget responds with the error
Invalid Signature 307ea7506e6ced6a834a41e8fa1907911764b3a3. String to sign - 'folder=boat&source=uw×tamp=1553619840'.
I've pushed the example in github: https://github.com/batdevis/cloudinary_direct_demo.
All the javascript code is here:
https://github.com/batdevis/cloudinary_direct_demo/blob/master/app/views/images/new.html.erb#L48
<script type="text/javascript">
<% params_to_sign = {folder: ENV.fetch('CLOUDINARY_FOLDER'), source: "uw"} %>
<% sign_request = Cloudinary::Utils.sign_request(params_to_sign) %>
var uploadSignature = '<%= sign_request[:signature] %>';
var uploadSignatureTimestamp = '<%= sign_request[:timestamp] %>';
var myWidgetSigned = cloudinary.createUploadWidget({
cloudName:'<%=Cloudinary.config.cloud_name %>',
apiKey:'<%=Cloudinary.config.api_key %>',
multiple:false,
folder:'<%=ENV.fetch('CLOUDINARY_FOLDER') %>',
uploadSignatureTimestamp:uploadSignatureTimestamp,
uploadSignature:uploadSignature
}, (error, result) => {
if (!error && result && result.event === "success") {
console.log('Done! Here is the signed image info: ', result.info);
document.getElementById("result_signed").innerText = JSON.stringify(result);
}
});
document.getElementById("upload_widget_signed").addEventListener("click", function(){
myWidgetSigned.open();
}, false);
</script>
-
Hi,
Can you please point me to `sign_request` function?
Thanks
0 -
It's from official Cloudinary ruby gem:
I think the problem is what to put inside the params_to_sign object.
Now it's (ruby code)
params_to_sign = {folder: ENV.fetch('CLOUDINARY_FOLDER'), source: "uw"}0 -
I have managed to do it. In my project params_to_sign consist of 3 items which "public_id", "source" and "timestamp". The code will be as below:
TimeStamp = Time.now.to_i
params_to_sign = {public_id: "Sample", source: "uw", timestamp: TimeStamp}
Signature = Cloudinary::Utils.api_sign_request(params_to_sign, Rails.application.credentials.cloud_secret)Next, in your upload widget code, you must add publicId params that have the same value with public_id param in your params_to_sign signature. Hope this help you.
1
Post is closed for comments.
Comments
3 comments