INTEGRITY Документация

Приём изображений, загружаемых пользователями

Функция Direct Creator Upload в Cloudflare Images позволяет вашим пользователям загружать изображения по одноразовой ссылке для загрузки, не раскрывая ключ API или токен на стороне клиента. Использование прямой загрузки также избавляет от необходимости в промежуточном хранилище и связанных с ним затратах на хранение и исходящий трафик.

Вы можете настроить вебхуки чтобы получать уведомления о процессе прямой загрузки контента авторами.

Запросите одноразовый URL для загрузки

Сделайте POST запрос к direct_upload эндпоинт, используя приведённый ниже пример в качестве образца.

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": []
}

После обращения к этой конечной точке создаётся новая черновая запись изображения, однако само изображение не появится в списке изображений. Чтобы проверить статус записи изображения, вы можете отправить запрос на одноразовый URL для загрузки с помощью direct_upload конечная точка.

Проверьте статус записи изображения

Чтобы проверить статус новой черновой записи изображения, используйте одноразовый 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"}'

Значение срока действия должно указывать время не менее чем через две минуты и не более чем через шесть часов от текущего момента.

Direct Creator Upload с пользовательским ID

Вы можете указать custom ID при первом запросе одноразового URL для загрузки вместо использования автоматически сгенерированного ID изображения. Обратите внимание, что изображения с собственным ID нельзя сделать приватными с помощью токены подписанных URL функцию (--requireSignedURLs=true).

Чтобы указать собственный ID, передайте поле формы с именем ID и соответствующим значением custom ID, как показано в примере ниже.

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