Re-Loadit: simplifique uploads com o Robot /upload/handle
Este post é a terceira parte da série que chamamos de Re-loadit. Nestes posts, abordamos vários recursos da Transloadit que ainda não foram apresentados devidamente aos nossos usuários.
Assim como nas outras apresentações de Robot, vamos mostrar alguns exemplos, explicar a funcionalidade principal do Robot e dar algumas dicas de como começar. Esperamos que você goste de aprender mais sobre como aproveitar a variedade de recursos da Transloadit.
O Robot /upload/handle
Uma das muitas formas de fornecer à Transloadit um arquivo para transcodificar é o Robot /upload/handle. Este Robot lida com uploads de um ou de vários arquivos sem nenhum problema. É, de longe, o método mais simples de fazer upload de arquivos para a Transloadit e pode ser usado junto com seus formulários HTML.
Você não precisa definir vários pontos de upload para enviar vários arquivos, já que o Robot /upload/handle consegue processar vários uploads em uma única instância, graças à nossa biblioteca node-formidable. Os arquivos formam campos diferentes em um upload multipart. Este Robot também lida sem esforço com uploads retomáveis usando o tus, nosso próprio protocolo de código aberto para uploads retomáveis, que está a caminho de se tornar o padrão do setor.

Por que ter o /upload/handle como um Robot?
Ora, por que fazer algo você mesmo quando um Robot poderia fazer isso em uma fração do tempo! 😎
Brincadeiras à parte, embora o Robot /upload/handle só faça parte da família de Robots da Transloadit desde maio do ano passado, sua funcionalidade principal é parte essencial do nosso serviço desde o início. No entanto, descobrimos que nossos clientes também precisavam muito de uma forma de definir metadados (e outras opções) para os arquivos enviados, e não apenas para os resultados da transcodificação.
E foi exatamente por isso que desenvolvemos um Robot para lidar com uploads de arquivos. Agora,
se você quisesse saber se os arquivos enviados tinham áreas transparentes, bastava definir
output_meta : {has_transparency: true} no Robot /upload/handle,
e meta.has_transparency seria definido automaticamente nos resultados.
O que ele pode fazer?
Pelo nome, já dá para imaginar sua funcionalidade. O Robot /upload/handle faz o upload de todos os arquivos de que você precisa para a Transloadit, para que fiquem disponíveis para os Steps de codificação. Como exemplo de funcionamento, vou mostrar como importar arquivos aleatórios e verificar no painel da Transloadit que o upload deles foi concluído com sucesso.
Vamos enviar arquivos para a Transloadit por meio de uma Assembly e depois entrar no painel da Transloadit para verificar que os arquivos chegaram em segurança.
Criando a Assembly
Estas são as Assembly Instructions que usei:
{
"steps": {
":original": {
"robot": "/upload/handle"
}
}
}
Então, o que está acontecendo no código acima? Definimos Assembly Instructions que pedem à Transloadit para lidar com os arquivos enviados. Como não adicionamos nenhum outro Step, a Transloadit não fará nenhum processamento adicional nesses arquivos.
Para testar estas Assembly Instructions, execute o seguinte código Node.js
no seu servidor, substituindo PATH_TO_LOCAL_VIDEO_FILE pelo caminho do seu arquivo.
const { Transloadit } = require('transloadit')
const transloadit = new Transloadit({
authKey: process.env.TRANSLOADIT_AUTH_KEY,
authSecret: process.env.TRANSLOADIT_AUTH_SECRET,
})
const options = {
files: { file_1: 'PATH_TO_LOCAL_VIDEO_FILE' },
params: {
steps: {
':original': {
robot: '/upload/handle',
},
},
},
}
transloadit.createAssembly(options)
.then((result) => console.log({ result }))
.catch((error) => {
console.error(error)
process.exitCode = 1
})
Depois de testar o código, entre no seu painel, clique em Assemblies na barra lateral e depois na primeira Assembly que aparecer. Você deverá ver um resultado como este:

Observe que o seu arquivo aparecerá na seção de arquivos enviados.
Testando com vários arquivos
Embora possamos testar o upload de vários arquivos exatamente como fizemos com um único arquivo, acho melhor usar outro exemplo, que mostre como enviar vários arquivos em um cenário mais realista. Neste exemplo, vamos embutir uma legenda em um arquivo de vídeo usando o Robot /upload/handle e o Robot /video/subtitle. Dê uma olhada nas Assembly Instructions:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"subtitled": {
"robot": "/video/subtitle",
"preset": "ipad-high",
"use": {
"steps": [
{ "name": ":original", "fields": "video", "as": "video" },
{ "name": ":original", "fields": "subtitle", "as": "subtitles" }
]
}
}
}
}
No bloco de código acima, usamos o Robot /upload/handle
para importar dois arquivos diferentes e depois declaramos um Step subtitled, no
qual especificamos qual dos arquivos enviados é o vídeo e qual é o arquivo de legenda, ou seja, no
Robot /video/subtitle, por meio do parâmetro use.
Observe que os “fields” dentro dos filtros
usecorrespondem aos campos de entrada junto ao atributo name. Em outras palavras, ao nome que você dá ao arquivo ao fazer o upload.
Também podemos testar estas Assembly Instructions executando o seguinte código Node.js no seu servidor, substituindo os dois caminhos de arquivos locais:
const { Transloadit } = require('transloadit')
const transloadit = new Transloadit({
authKey: process.env.TRANSLOADIT_AUTH_KEY,
authSecret: process.env.TRANSLOADIT_AUTH_SECRET,
})
const options = {
files: {
video: 'PATH_TO_LOCAL_VIDEO_FILE',
subtitle: 'PATH_TO_LOCAL_SUBTITLE_FILE',
},
params: {
steps: {
':original': {
robot: '/upload/handle',
},
subtitled: {
robot: '/video/subtitle',
preset: 'ipad-high',
use: {
steps: [
{ name: ':original', fields: 'video', as: 'video' },
{ name: ':original', fields: 'subtitle', as: 'subtitles' },
],
},
},
},
},
}
transloadit.createAssembly(options)
.then((result) => console.log({ result }))
.catch((error) => {
console.error(error)
process.exitCode = 1
})
Os resultados
Ao verificar a Assembly no meu painel da Transloadit, percebo que:
-
No upload de um único arquivo, o upload do meu arquivo para a Transloadit foi concluído com sucesso. Nenhuma codificação adicional foi feita no arquivo, exatamente como indicado nas Assembly Instructions
-
No upload de vários arquivos, o upload dos meus arquivos foi concluído com sucesso e o arquivo de legenda foi embutido no meu vídeo.
Espero que este post tenha mostrado como o Robot /upload/handle é poderoso e essencial, e como é fácil acessar vários arquivos enviados com este Robot.
Na próxima parte da série Re-loadit, vamos falar sobre o nosso Robot /google/store. Fique ligado!
