Uploads

Creates a multipart external upload

POST
https://discourse.example.com/uploads/create-multipart.json

Creates a multipart upload in the external storage provider, storing a temporary reference to the external upload similar to /get-presigned-put.

You must have the correct permissions and CORS settings configured in your external provider. We support AWS S3 as the default. See:

https://meta.discourse.org/t/-/210469#s3-multipart-direct-uploads-4.

An external file store must be set up and enable_direct_s3_uploads must be set to true for this endpoint to function.

Body

application/json
upload_typestringavatarprofile_backgroundcard_backgroundcustom_emojicomposerrequired
file_namestringrequired
Example
IMG_2021.jpeg
file_sizeintegerrequired

File size should be represented in bytes.

Example
4096
metadataobject
Show child attributes
sha1-checksumstring

The SHA1 checksum of the upload binary blob. Optionally be provided and serves as an additional security check when later processing the file in complete-external-upload endpoint.

Response

200OKany

external upload initialized

Response fields application/json
keystringrequired

The path of the temporary file on the external storage service.

Example
temp/site/uploads/default/12345/67890.jpg
external_upload_identifierstringrequired

The identifier of the multipart upload in the external storage provider. This is the multipart upload_id in AWS S3.

Example
84x83tmxy398t3y._Q_z8CoJYVr69bE6D7f8J6Oo0434QquLFoYdGVerWFx9X5HDEI_TP_95c34n853495x35345394.d.ghQ
unique_identifierstringrequired

A unique string that identifies the external upload. This must be stored and then sent in the /complete-multipart and /batch-presign-multipart-parts endpoints.

Example
66e86218-80d9-4bda-b4d5-2b6def968705