Instruções: Como fazer upload (básico)
Instruções: Como fazer upload (básico)
Introdução
Chegamos agora a um marco emocionante em nossa jornada de integração: o upload de recursos para o Frame.io.Este guia irá orientá-lo pelo processo básico de upload.
Pré-requisitos
Caso ainda não tenha feito isso, revise o guia Implementação do C2C: Configuração antes de prosseguir.Você precisará do access_token obtido durante o processo de autenticação e autorização.Para este guia, usaremos um recurso de teste de exemplo disponível neste link do Frame.io.Baixe este arquivo para acompanhar nossos exemplos, pois isso permitirá que você utilize os mesmos valores dos nossos comandos de exemplo.
Etapa 1: criar um recurso
Vamos fazer o upload do nosso arquivo de exemplo, que vamos supor que tenha sido criado há 10 segundos.Primeiro, precisamos criar uma referência de recurso no Frame.io:
Especificação do ponto de acesso da API
A documentação para /v2/devices/assets pode ser encontrada aqui.Embora o ponto de acesso legado /v2/assets ainda funcione, recomendamos que novas integrações utilizem /v2/devices/assets.
Codificação JSON
Ao contrário dos pontos de acesso de autenticação que usamos anteriormente, este ponto de acesso aceita a codificação application/json em vez de form/multipart.Ele também aceita application/x-www-form-urlencoded.
Vamos examinar os parâmetros do conteúdo JSON:
name: o nome do ativo exibido no Frame.io.Não é necessário que ele corresponda ao nome do arquivo no disco.filetype: o tipo MIME do arquivo.A maioria das linguagens de programação oferece utilitários para detecção de tipo MIME (exemplos: Go, Python).filesize: o tamanho do arquivo em bytes.Nosso arquivo de exemplo tem aproximadamente 21,1 MB.offset: o número de segundos desde que o arquivo foi criado.O valor padrão é 0, caso seja omitido.Esse parâmetro deve ser fornecido, pois ajuda a determinar se os arquivos devem ser rejeitados devido à pausa do dispositivo.Abordaremos isso com mais detalhes no guia avançado de upload.
A resposta terá uma aparência semelhante a esta (com alguns campos omitidos):
Neste momento, apenas informamos ao Frame.io nossa intenção de fazer o upload de um arquivo. Nenhum dado real do arquivo foi transferido.Se você verificar a pasta do seu dispositivo no projeto, verá um recurso provisório no estado “em upload”.
O campo upload_urls contém as URLs para onde faremos o upload dos blocos do nosso arquivo.Para o nosso arquivo de teste, devemos receber duas URLs de upload.
Etapa 2: dividir o arquivo em blocos
A resposta continha várias URLs de upload.Ao fazer upload para o Frame.io, dividimos os arquivos em blocos e os enviamos separadamente, o que traz várias vantagens:
- Maior confiabilidade: se um bloco falhar, não precisamos reiniciar todo o upload
- Uploads mais rápidos: podemos enviar vários blocos em paralelo (conforme explicado no guia de uploads avançados)
Para determinar o tamanho ideal dos blocos, use esta fórmula:
Para nosso arquivo de exemplo, o cálculo é:
Isso significa que cada bloco deve ter 10.568.125 bytes.Os tamanhos dos blocos geralmente giram em torno de 25 MB, com cálculos exatos abordados no guia de uploads avançados.
Tamanho do último bloco
Como os tamanhos dos arquivos raramente se dividem uniformemente, o bloco final pode ser menor do que o chunk_size calculado.Sua implementação deve levar isso em consideração ao ler os blocos do arquivo.
Para esta demonstração, usaremos os comandos head e tail para extrair os blocos do arquivo.
Etapa 3: fazer upload dos blocos
Para fazer upload do primeiro bloco:
Sintaxe do comando
O parâmetro --data-binary @- instrui o curl a usar dados brutos do stdin, que vêm do comando head.
A solicitação requer estes cabeçalhos:
content-type: o mesmo valor de tipo MIME usado ao criar o ativo x-amz-acl: Para permissões do AWS S3, defina sempre como private
Um upload bem-sucedido retorna:
Da mesma forma, faça o upload do segundo bloco:
Após a conclusão de ambos os uploads, seu ativo deverá estar pronto para reprodução no Frame.io!🎉
Erros de upload
Ao fazer o upload de blocos, você está enviando dados diretamente para o AWS S3, e não para a API do Frame.io.As respostas de erro seguirão os formatos do AWS S3, em vez dos erros padrão do Frame.io.Abordaremos o tratamento de erros do S3 no guia de tratamento de erros.
Ordem dos blocos
Embora seja conceitualmente mais simples fazer o upload dos blocos sequencialmente, na prática eles podem ser enviados em qualquer ordem.O sistema os montará corretamente, independentemente da sequência de envio.
Reunindo tudo
Aqui está um exemplo simplificado de pseudocódigo semelhante ao Python para o processo completo de upload:
Este exemplo demonstra o fluxo básico sem tratamento de erros ou uploads paralelos, que serão abordados nos guias de tratamento de erros e uploads avançados.
Próximas etapas
Parabéns por ter realizado com sucesso o upload do seu primeiro recurso no Frame.io!O guia de uploads avançados abordará técnicas mais sofisticadas e requisitos para implementações prontas para produção.Recomendamos que você entre em contato com nossa equipe caso tenha alguma dúvida e consulte o guia de uploads em tempo real para saber mais sobre como fazer o upload de recursos à medida que eles são criados.