Criar um upload tus
Cria um recurso de upload retomável a partir de metadados de Assembly validados.
{TUS_URL}Use a URL de capacidade tus_url da resposta validada da Assembly como destino da requisição. Ela não usa credenciais implicitamente disponíveis associadas ao host da API2.
Para um upload normal de tamanho fixo, primeiro crie uma Assembly com
num_expected_upload_files definido como o número de arquivos. Copie o assembly_ssl_url e o tus_url
dela para o exemplo abaixo. Não use o hostname geral da API no lugar do tus_url retornado.
Este exemplo reserva quatro bytes e depois envia o texto file. Para um arquivo real, use o
comprimento em bytes dele e envie seus bytes na requisição PATCH.
assembly_ssl_url='<assembly_ssl_url from the creation response>'
tus_url='<tus_url from the creation response>'
assembly_metadata=$(printf %s "$assembly_ssl_url" | base64 | tr -d "\n")
curl --fail-with-body -sS --include --request POST \
--url "$tus_url" \
--header 'tus-resumable: 1.0.0' \
--header 'upload-length: 4' \
--header "upload-metadata: assembly_url $assembly_metadata,filename ZmlsZS50eHQ=,fieldname ZmlsZQ=="
Uma resposta 201 bem-sucedida retorna a URL de upload no cabeçalho location.
Copie essa URL abaixo. Guarde-a para que uma transferência interrompida possa continuar a partir do offset informado pelo servidor.
upload_url='<Location response header>'
curl --fail-with-body -sS --request PATCH \
--url "$upload_url" \
--header 'tus-resumable: 1.0.0' \
--header 'upload-offset: 0' \
--header 'content-type: application/offset+octet-stream' \
--data-binary 'file'
Consulte o guia de uploads retomáveis para recuperação e finalização. Comprimentos diferidos, concatenação e as gramáticas exatas dos cabeçalhos são abordados abaixo.
Para uploads paralelos, crie recursos parciais, envie os bytes deles e depois crie um recurso
final que os concatene. Apenas o arquivo final se torna entrada da Assembly e passa
pelo seu Template. Defina num_expected_upload_files como o número de arquivos finais, não como
o número de recursos parciais. Inclua os metadados assembly_url, filename e fieldname
em toda requisição de criação, parcial e final. Com o tus-js-client, forneça também esses campos
em metadataForPartialUploads ao usar parallelUploads.
Omita Upload-Concat em um upload normal. Defina-o como partial em cada requisição de
criação parcial. Depois que todos os uploads parciais terminarem, crie o recurso final com:
Upload-Concat: final;<PARTIAL_UPLOAD_URL_1> <PARTIAL_UPLOAD_URL_2>
Substitua os placeholders pelas URLs Location completas retornadas para os uploads parciais.
Mantenha o ponto e vírgula imediatamente após final e separe as URLs com espaços. A ordem
delas determina a ordem dos bytes no arquivo final.
Autenticação
Envie assembly_url no cabeçalho Upload-Metadata com o valor de assembly_ssl_url codificado em Base64 da mesma resposta de Assembly validada.
Cabeçalhos da requisição
Esquema JSON completo
Cabeçalhos normalizados em minúsculas para a criação de upload tus de comprimento fixo, de comprimento adiado, parcial ou final.
| Campo | Tipo e descrição |
|---|---|
tus-resumableobrigatório | string (sempre: "1.0.0")A versão negociada do tus. |
upload-metadataobrigatório | stringChaves de metadados em ASCII separadas por vírgula, com valores opcionais em Base64 padrão. Uploads bem-sucedidos da Transloadit incluem filename e fieldname; os metadados de autenticação são compostos pelo transporte. Padrão de validação (expressão regular)^[\x21-\x2b\x2d-\x7e]+(?: (?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?)?(?:,[\x21-\x2b\x2d-\x7e]+(?: (?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?)?)*$ |
Qualquer um dos esquemas a seguir pode ser aplicado:
propriedades obrigatórias: upload-length
Campos além dos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
content-type | string (sempre: "application/offset+octet-stream") |
upload-concat | string (sempre: "partial") |
upload-defer-length | nuncaEste valor é proibido. |
upload-lengthobrigatório | stringUma contagem de bytes canônica, sem sinal e em base 10, dentro do intervalo de 64 bits com sinal, sem zeros à esquerda nem sinal de mais. Padrão de validação (expressão regular)^(?:0|[1-9][0-9]{0,17}|[1-8][0-9]{18}|9[0-1][0-9]{17}|92[0-1][0-9]{16}|922[0-2][0-9]{15}|9223[0-2][0-9]{14}|92233[0-6][0-9]{13}|922337[0-1][0-9]{12}|92233720[0-2][0-9]{10}|922337203[0-5][0-9]{9}|9223372036[0-7][0-9]{8}|92233720368[0-4][0-9]{7}|922337203685[0-3][0-9]{6}|9223372036854[0-6][0-9]{5}|92233720368547[0-6][0-9]{4}|922337203685477[0-4][0-9]{3}|9223372036854775[0-7][0-9]{2}|922337203685477580[0-6]|9223372036854775807)$ |
upload-defer-length: "1"
Campos além dos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
content-type | string (sempre: "application/offset+octet-stream") |
upload-concat | string (sempre: "partial") |
upload-defer-lengthobrigatório | string (sempre: "1") |
upload-length | nuncaEste valor é proibido. |
propriedades obrigatórias: upload-concat
Campos além dos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
content-type | nuncaEste valor é proibido. |
upload-concatobrigatório | string (comprimento máximo: 8192)Padrão de validação (expressão regular)^final;(?:https?:\/\/[^/\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+)?\/resumable\/files\/[^/\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+(?:\/[^/\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+)*(?: (?:https?:\/\/[^/\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+)?\/resumable\/files\/[^/\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+(?:\/[^/\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+)*)*$ |
upload-defer-length | nuncaEste valor é proibido. |
upload-length | nuncaEste valor é proibido. |
Corpo da requisição
Corpo da requisição binário. application/offset+octet-stream O corpo é opcional.
Resposta
HTTP 201
Sem corpo de resposta.
Cabeçalhos de resposta
Esquema JSON completo
Campos além dos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
locationobrigatório | string (comprimento mínimo: 1)A nova URL do recurso de upload. Os clientes devem validá-la como uma capacidade retornada. |
tus-resumableobrigatório | string (sempre: "1.0.0") |
upload-offset | stringUma contagem de bytes canônica, sem sinal e em base 10, dentro do intervalo de 64 bits com sinal, sem zeros à esquerda nem sinal de mais. Padrão de validação (expressão regular)^(?:0|[1-9][0-9]{0,17}|[1-8][0-9]{18}|9[0-1][0-9]{17}|92[0-1][0-9]{16}|922[0-2][0-9]{15}|9223[0-2][0-9]{14}|92233[0-6][0-9]{13}|922337[0-1][0-9]{12}|92233720[0-2][0-9]{10}|922337203[0-5][0-9]{9}|9223372036[0-7][0-9]{8}|92233720368[0-4][0-9]{7}|922337203685[0-3][0-9]{6}|9223372036854[0-6][0-9]{5}|92233720368547[0-6][0-9]{4}|922337203685477[0-4][0-9]{3}|9223372036854775[0-7][0-9]{2}|922337203685477580[0-6]|9223372036854775807)$ |
x-content-type-optionsobrigatório | string (sempre: "nosniff") |
Resposta de erro
Corpo da resposta em texto. text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
stringQualquer um dos esquemas a seguir pode ser aplicado:
Variante 1: string
stringPadrão de validação (expressão regular)
^ERR_[A-Z0-9_]+: [^\r\n]*\n$Variante 2: string
stringEnquadramento bruto de erro de hook em text/plain com um payload literal; tem formato de JSON, mas não é necessariamente um JSON válido.
Padrão de validação (expressão regular)
^\{"error":"(?:[\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]|[^\x09-\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])*"\}$Cabeçalhos de resposta
Esquema JSON completo
Campos além dos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
content-typeobrigatório | string (sempre: "text/plain; charset=utf-8") |
tus-resumableobrigatório | string (sempre: "1.0.0") |
x-content-type-optionsobrigatório | string (sempre: "nosniff") |