Skip to content

Commit fc4667a

Browse files
committed
add signed uploads demo.
1 parent 73356b2 commit fc4667a

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
require('dotenv').config()
2+
const cloudinary = require('cloudinary').v2;
3+
4+
const fs = require("node:fs")
5+
const path = require("node:path")
6+
7+
cloudinary.config({
8+
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
9+
api_key: process.env.CLOUDINARY_API_KEY,
10+
api_secret: process.env.CLOUDINARY_API_SECRET,
11+
})
12+
13+
const imagePath = path.resolve(__dirname, "./images/stellan-johansson-1PP0Fc-KSd4-unsplash.jpg")
14+
15+
// PART ONE | Generate a signature
16+
17+
const timestamp = Math.round(new Date().getTime() / 1000)
18+
19+
const signature = cloudinary.utils.api_sign_request(
20+
{
21+
folder: "example",
22+
public_id: "satellite-rest-signed",
23+
unique_filename: false,
24+
timestamp,
25+
},
26+
process.env.CLOUDINARY_API_SECRET,
27+
)
28+
29+
console.log(signature)
30+
31+
// PART TWO | Upload an image using the REST API
32+
33+
const fileBuffer = fs.readFileSync(imagePath)
34+
const base64File = fileBuffer.toString("base64")
35+
const dataUri = `data:image/jpeg;base64,${base64File}`
36+
37+
const url = `https://api.cloudinary.com/v1_1/${process.env.CLOUDINARY_CLOUD_NAME}/image/upload`
38+
39+
const formData = new FormData()
40+
41+
formData.append("file", dataUri)
42+
formData.append("folder", "example")
43+
formData.append("public_id", "satellite-rest-signed")
44+
formData.append("unique_filename", "false")
45+
formData.append("timestamp", timestamp.toString())
46+
formData.append("api_key", process.env.CLOUDINARY_API_KEY)
47+
formData.append("signature", signature)
48+
49+
const response = await fetch(url, {
50+
method: "POST",
51+
body: formData,
52+
})
53+
54+
const signedRestImage = await response.json()
55+
console.log(signedRestImage.url)
56+
57+
// PART THREE | Cloudinary SDK handles signing for you
58+
59+
const signedSdkImage = await cloudinary.uploader.upload(imagePath, {
60+
folder: "example",
61+
public_id: "satellite-sdk-signed",
62+
unique_filename: false,
63+
})
64+
65+
console.log(signedSdkImage.url)

0 commit comments

Comments
 (0)