簡體   English   中英

如何使用 cloudinary API 下載文件?

[英]How to download files using cloudinary API?

我試圖制作一個將.txt文件與 Cloudinary 同步的程序。 目的是使用 Heroku 運行代碼並在測功機重新啟動時下載斷言。 問題是他們的網站上似乎沒有下載 function (很可能是我不知道如何閱讀)。

我認為fetch function 可能是我正在尋找的,但它似乎也用於上傳。 我也知道有一些 function(可能不是來自 Cloudinary)可以使用鏈接下載。 這個解決方案也可以,但是我需要找到一種方法來獲取鏈接(但我很確定它會在您上傳時return ),但問題是我的程序應該首先同步,這意味着我無法將鏈接作為返回值。 我還想知道是否有辦法刪除文件(如果它們具有相同的名稱,它們不會自動替換)。

我做了一個小樣本,可以上傳文件,效果很好:

import cloudinary
import os
from cloudinary import uploader
from signal import signal, SIGINT, SIGTERM
import time

cloudinary.config(
  cloud_name = 'not_real',  
  api_key = '696969696996',  
  api_secret = 'helloWorld'  
)

def downloader():
  #something here...
  pass

downloader()

def handler(sig, frame):
  print(cloudinary.uploader.upload("TEST.txt", resource_type = "raw", public_id = "TEST"))

print("PID: ", os.getpid())
signal(SIGTERM, handler)   # to understand when the dyno is getting killed

while True:
  print("Doing nothing...")
  time.sleep(3600)

再次(簡而言之)我想要這樣做:

  1. 通過鏈接或名稱下載文件。
  2. 刪除舊文件(如果有必要)

任何幫助將非常感激。

upd:似乎指向 Cloudinaty .txt文件的鏈接打開了一個只有文本的空網頁,所以我想我可以

r = requests.get("https://res.cloudinary.com/name/raw/upload/v1589215899/TEST.txt")
print(r.text)

,但我想知道是否有更好的解決方案。

raw上傳到 Cloudinary 后,會返回一個響應,其中包括以下內容:

{
  "public_id": "sample.txt",
  "version": 1371928603,
  "signature": "9088291a2c12202767cfa7c5e874afee72be78cd",
  "resource_type": "raw",
  "created_at": "2017-06-22T19:16:43Z",
  "tags": [],
  "bytes": 6144,
  "type": "upload",
  "etag": "107bf134b5afd11cc7544d60108d87b", 
  "url": "http://res.cloudinary.com/demo/raw/upload/v1371928603/sample.txt",
  "secure_url": 
         "https://res.cloudinary.com/demo/raw/upload/v1371928603/sample.txt"
  "original_filename": "myoriginaltextfile"
}

Cloudinary 建議存儲public_idresource_typetypeversion (可以省略),以便稍后重新生成 Cloudinary URL。 public_id是資產的唯一標識符。 resource_type標識它是什么資源,例如imagevideoraw type是該資產的交付類型,例如upload (表示公共)、 private和已authenticated等等。 version是上傳資產的時間戳。 話雖如此,一旦您擁有這些資產詳細信息,您就可以通過直接構建 URL 或生成圖像或視頻標簽來生成 Cloudinary URL。 圖像/視頻標簽對原始文件沒有幫助,因此直接 URL 構建將是 go 的方式。 Cloudinary Python SDK(以及它們的任何其他 SDK)具有類似的功能,但 Python 可以在這里找到。

cloudinary.utils.cloudinary_url("sample.txt", resource_type = "raw")
# Output: "https://res.cloudinary.com/demo/raw/upload/sample.txt"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM