Guida pratica: Caricamento (base)
Guida pratica: Caricamento (base)
Introduzione
Eccoci in un passaggio fondamentale e monto interessante nel percorso di integrazione: caricare le risorse su Frame.io. Questa guida illustra il processo di caricamento di base.
Prerequisiti
Se non l’hai già fatto, consulta la guida Implementazione C2C: configurazione prima di procedere.Avrai bisogno dell’access_token ottenuto durante il processo di autenticazione e autorizzazione.Per questa guida, utilizzeremo una risorsa test di esempio disponibile su questo link a Frame.io. Scarica questo file per seguire i nostri esempi, poiché ti permetterà di far corrispondere i valori nei nostri comandi di esempio.
Passaggio 1: crea una risorsa
Carichiamo il file di esempio, che supponiamo sia stato creato 10 secondi fa. Per prima cosa, dobbiamo creare un riferimento alla risorsa in Frame.io:
Specifica dell'endpoint API
La documentazione per /v2/devices/assets è disponibile qui.Sebbene l’endpoint precedente /v2/assets funzioni ancora, consigliamo alle nuove integrazioni di utilizzare /v2/devices/assets.
Codifica JSON
A differenza degli endpoint di autenticazione utilizzati in precedenza, questo endpoint accetta la codifica application/json anziché form/multipart. Accetta anche application/x-www-form-urlencoded.
Esaminiamo i parametri del payload JSON:
name: il nome della risorsa visualizzato in Frame.io. Non deve corrispondere al nome file su disco. filetype: il tipo MIME del file. La maggior parte dei linguaggi di programmazione fornisce utilità per il rilevamento del tipo MIME (esempi: Go, Python). filesize: la dimensione del file in byte. Il file di esempio ha una dimensione di circa 21,1 MB. offset: il numero di secondi trascorsi dalla creazione del file. Per impostazione predefinita è 0, se omesso. Questo parametro deve essere fornito in quanto aiuta a determinare se i file devono essere rifiutati a causa della pausa del dispositivo. Approfondiremo questo argomento nella guida per il caricamento avanzato.
La risposta sarà simile a questa (alcuni campi sono omessi):
A questo punto, abbiamo solo informato Frame.io dell’intenzione di caricare un file; nessun dato del file è stato trasferito. Se controlli la cartella del tuo dispositivo nel progetto, vedrai una risorsa segnaposto in stato “uploading”.
Il campo upload_urls contiene gli URL dove caricheremo i chunk del file. Per il file di test, dovremmo ricevere due URL di caricamento.
Passaggio 2: divisione del file in chunk
La risposta conteneva più URL di caricamento. Quando carichi su Frame.io, i file vengono suddivisi in chunk che vengono caricati separatamente, il che offre diversi vantaggi:
- Maggiore affidabilità: se un chunk non riesce, non è necessario riavviare l’intero caricamento
- Caricamenti più veloci: possiamo caricare più chunk in parallelo (questa operazione è trattata nella guida al caricamento avanzato)
Per determinare la dimensione ottimale del chunk, usa questa formula:
Per il file di esempio, il calcolo è:
Questo significa che ogni chunk dovrebbe essere di 10.568.125 byte. Le dimensioni dei chunk in genere sono di circa 25 MB. I calcoli esatti sono trattati nella guida ai caricamenti avanzati.
Dimensione dell'ultimo chunk
Poiché le dimensioni dei file raramente si dividono in modo uniforme, il chunk finale può essere più piccolo del valore calcolato di chunk_size. L’implementazione deve tenere conto di questo aspetto durante la lettura dei chunk di file.
Per questa dimostrazione, useremo i comandi head e tail per estrarre i chunk di file.
Passaggio 3: caricamento dei chunk
Per caricare il primo chunk:
Sintassi dei comandi
Il parametro --data-binary @- indica a curl di utilizzare i dati raw da stdin, che provengono dal comando head.
La richiesta richiede queste intestazioni:
content-type: lo stesso valore del tipo MIME utilizzato durante la creazione della risorsa x-amz-acl: per le autorizzazioni di AWS S3, va impostato sempre su private
Se un caricamento riesce, viene restituito quanto segue:
Allo stesso modo, carica il secondo chunk:
Al termine di entrambi i caricamenti, la risorsa dovrebbe essere riproducibile in Frame.io! 🎉
Errori di caricamento
Durante il caricamento dei chunk, i dati vengono inviati direttamente ad AWS S3, non all’API di Frame.io. Le risposte di errore seguiranno i formati di AWS S3, anziché gli errori standard di Frame.io. Tratteremo la gestione degli errori di S3 nella guida alla gestione degli errori.
Ordine dei chunk
Benché concettualmente sia più semplice caricare i chunk in sequenza, in realtà possono essere caricati in qualsiasi ordine. Il sistema li assemblerà correttamente a prescindere dalla sequenza di caricamento.
Mettere tutto insieme
Ecco un esempio di pseudocodice semplificato simile a Python per il processo di caricamento completo:
Questo esempio dimostra il flusso di base senza gestione degli errori o caricamenti paralleli, che saranno trattati nelle guide su gestione degli errori e caricamenti avanzati.
Passaggi successivi
Complimenti! Hai caricato la tua prima risorsa su Frame.io! La guida ai caricamenti avanzati coprirà delle tecniche più sofisticate e requisiti per implementazioni pronte per la produzione. Ti invitiamo a contattare il nostro team per qualsiasi domanda e a procedere con la guida ai caricamenti in tempo reale per imparare come caricare le risorse mentre vengono create.