跳转到内容
搜索文档

接受用户上传的图像

最后更新 查看 MarkdownAgent 设置

Cloudflare Images 中的 Direct Creator Upload 功能让您的用户通过一次性上传 URL 上传图像,而无需向客户端暴露 API 密钥或令牌。使用 direct creator upload 还可以消除对中间存储桶以及相关存储/出口成本的需求。

您可以设置 webhooks 以接收 direct creator upload 工作流的通知。

请求一次性上传 URL

使用以下示例作为参考向 direct_upload 端点发出 POST 请求。

curl --request POST \
https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v2/direct_upload \
--header "Authorization: Bearer <API_TOKEN>" \
--form 'requireSignedURLs=true' \
--form 'metadata={"key":"value"}'

成功请求后,您将收到类似于以下示例的响应。id 字段是创建者将上传的未来图像标识符。

{
	"result": {
		"id": "2cdc28f0-017a-49c4-9ed7-87056c83901",
		"uploadURL": "https://upload.imagedelivery.net/Vi7wi5KSItxGFsWRG2Us6Q/2cdc28f0-017a-49c4-9ed7-87056c83901"
	},
	"result_info": null,
	"success": true,
	"errors": [],
	"messages": []
}

调用端点后,将创建新的草稿图像记录,但图像不会出现在图像列表中。如果您想检查图像记录的状态,可以使用 direct_upload 端点向一次性上传 URL 发出请求。

检查图像记录状态

要检查新草稿图像记录的状态,使用如下示例所示的一次性上传 URL。

curl https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1/{image_id} \
--header "Authorization: Bearer <API_TOKEN>"

成功请求后,您应收到类似于以下示例的响应。draft 字段在创建者上传图像之前设置为 true。上传图像后,draft 字段将被移除。

{
	"result": {
		"id": "2cdc28f0-017a-49c4-9ed7-87056c83901",
		"metadata": {
			"key": "value"
		},
		"uploaded": "2022-01-31T16:39:28.458Z",
		"requireSignedURLs": true,
		"variants": [
			"https://imagedelivery.net/Vi7wi5KSItxGFsWRG2Us6Q/2cdc28f0-017a-49c4-9ed7-87056c83901/public",
			"https://imagedelivery.net/Vi7wi5KSItxGFsWRG2Us6Q/2cdc28f0-017a-49c4-9ed7-87056c83901/thumbnail"
		],
		"draft": true
	},
	"success": true,
	"errors": [],
	"messages": []
}

后端端点应将 uploadURL 属性返回给客户端,客户端上传图像而无需传递任何身份验证信息。

以下是一个 HTML 页面示例,它接受一次性上传 URL 并上传用户选择的任何图像。

<!DOCTYPE html>
<html>
	<body>
		<form
			action="INSERT_UPLOAD_URL_HERE"
			method="post"
			enctype="multipart/form-data"
		>
			<input type="file" id="myFile" name="file" />
			<input type="submit" />
		</form>
	</body>
</html>

默认情况下,如果未使用,uploadURL 将在 30 分钟后过期。要覆盖此选项,请在 cURL 命令中添加以下参数:

--data '{"expiry":"2021-09-14T16:00:00Z"}'

过期值必须是未来最少两分钟、最多六小时。

使用自定义 ID 的 Direct Creator Upload

您可以在首次请求一次性上传 URL 时指定自定义 ID,而不是使用图像自动生成的 ID。请注意,具有自定义 ID 的图像无法使用签名 URL 令牌 功能设为私有(--requireSignedURLs=true)。

要指定自定义 ID,传递名称为 ID 的 form 字段及相应的自定义 ID 值,如下例所示。

--form 'id=this/is/my-customid'

这篇文档对您有帮助吗?