我正在嘗試使用 Cloudinary.downloadMulti(String tag, Map options)生成一個 URL,以將多個影像下載為具有相同標簽的 zip 檔案。我生成的 URL 看起來很好,但是當我轉到 URL 時,我遇到了 {"error":{"message":"Missing required parameter - timestamp"}}。
我進行了一些研究,我發現我需要簽署請求,但這并不是說我錯過了——只是時間戳。我相信請求已經被簽署,只需要一個正確的時間戳。我相信它需要在建構式中,但是當我呼叫Util.timestamp()它時,它不被識別為參考。
我的 Cloudinary 初始化程式:
private final Cloudinary cloudinary = new Cloudinary(ObjectUtils.asMap(
"cloud_name", "dxoa7bbix",
"api_key", "161649288458746",
"api_secret", "..."));
我的上傳方法:
public Photo uploadOrderImage(String imageURL, String publicId, Order order, String photoType) throws IOException {
Map result = cloudinary.uploader().upload(new File(imageURL), ObjectUtils.asMap(
"public_id", publicId,
"tags", order.getId().toString()));
Photo sellOrderPhoto = new Photo(
result.get("secure_url").toString(),
photoType,
order
);
return photoRepository.save(sellOrderPhoto);
}
這是我的下載方法:
public String downloadPhotos(String tag) throws IOException {
return cloudinary.downloadMulti(tag, ObjectUtils.asMap(
"tags", tag
));
}
一個例子URL我的下載方法的回傳值:生成的URL:https://api.cloudinary.com/v1_1/dxoa7bbix/image/multi?mode=download&async=false&signature=5f5da549fc78ea3fd50f034cdc76e2cce3089d48&api_key=161649288458746&tag=137×tamp=1638583257。
總的來說,我認為問題在于缺少時間戳。如果您有任何想法,那就太好了!
uj5u.com熱心網友回復:
錯誤的原因是該引數應該被呼叫,timestamp但根據您共享的 URL,它實際上是×tamp.
如果要生成包含共享特定標簽的資產的 ZIP 檔案的 URL,則需要使用generate_archive方法,而不是提供不同功能的multi方法。
如果替換以下代碼:
return cloudinary.downloadMulti(tag, ObjectUtils.asMap(
"tags", tag
));
和:
return cloudinary.downloadZip(ObjectUtils.asMap(
"tags", tag,
"resource_type", "image")
);
然后將生成并回傳一個指向 ZIP 檔案的 URL,該 ZIP 檔案將在訪問 URL 時創建,并包含來自云的影像,其中包含tag您指定的影像。
您使用的 Cloudinary Java SDK 將在使用任何內置方法時自動處理簽名/時間戳生成,因此,如果使用內置方法,您無需對 SDK 代碼進行任何更改或自行計算簽名- 方法。僅當您不打算使用任何 SDK,而是使用您自己的自定義代碼與 Cloudinary API 集成時,才需要生成簽名 - 例如,如果您正在使用 Cloudinary SDK 尚不存在的語言。在這種情況下,如果要執行經過身份驗證的 API 呼叫,則需要自己生成身份驗證簽名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372829.html
下一篇:用枕頭畫一個倒置的餡餅切片
