使用 axios delete 从 Cloudinary 中删除图像

Delete image from Clodinary using axios delete

我正在使用 axios post 请求在 cloudinary 上上传图像,我也想使用 axios delete 删除图像,但我找不到任何 api url 或任何代码这可以帮助我使用 axios delete 向 cloudnary 发送删除请求。

使用此代码在 Cloudinary 上上传图片
let imageFile = this.props.img
        var formData = new FormData()
        formData.append('file', imageFile)
        formData.append('upload_preset', Routes.CLOUDINARY_PRESET)
        await axios.post(Routes.CLOUDINARY_API, formData)
          .then(function (res) {
            imageURL = res.data.secure_url
          })
          .catch(function (err) {
            console.log("err", err)
          })

虽然您可以通过客户端上传到Cloudinary,但出于安全原因,您不能删除资源。如果您想删除资源,则 signature 也需要作为参数传递。

建议 generate signature 服务器端,因为这需要您公开帐户的 API 秘密。

要使用 axios post 从 cloudinary 中删除图像,首先您必须创建一个签名。 Click here 查看创建签名的文档。此外,您还需要一个库来将您的字符串散列为 hash1 格式。在此示例中,我使用了“crypto-hash”库。

除此之外,您还需要其他参数,例如 public_idapi_key时间戳.

**注意 - 你的API_KeyAPI-Secret 可以在您的 cloudinary 帐户仪表板中找到。获取所有必需的数据后,您可以使用以下代码发送 API 请求。 Public_id是一个唯一的id,用于清楚地标识我们需要从cloudinary media library中删除的图像。

const timestamp = new Date().getTime()
const string = `public_id=${<Add public_id>}&timestamp=${timestamp}<add your api secret>`
const signature = await sha1(string)
const formData = new FormData()
formData.append("public_id",<public_id>)
formData.append("signature",signature)
formData.append("api_key",<your api_key>)
formData.append("timestamp",timestamp)
const res = await ax.post("https://api.cloudinary.com/v1_1/<your cloud name>/image/destroy", formData)