Was ist ein blockweiser Upload?
Ein blockweiser Upload unterteilt eine Datei in Bytebereiche, die unabhängig voneinander übertragen und nachverfolgt werden. Eine fortsetzbare Implementierung kann fehlende Blöcke erneut übertragen, ohne die gesamte Datei noch einmal zu senden.
So funktionieren blockweise Uploads
Ein fortsetzbarer Dateiuploader legt einen Übertragungszustand an, unterteilt die Quelldatei in adressierte Teile und erfasst, welche Bytebereiche der Server angenommen hat. Die Teile können nacheinander oder gleichzeitig übertragen werden. Bei teilbasierten Protokollen prüft anschließend ein Abschlussvorgang das Objekt und setzt es zusammen. Offsetbasierte Protokolle wie tus sind dagegen abgeschlossen, wenn der angenommene Offset die angegebene Länge erreicht. Diese Protokollschicht liegt vor der Analyse und Verarbeitung von Medien. So können große Übernahmeaufträge Verbindungsabbrüche überstehen; Offsets, doppelte Retries, Ablaufzeiten und die abschließende Integrität müssen jedoch explizit berücksichtigt werden.
Wichtige Fakten
- Ein fortsetzbares Protokoll benötigt eine stabile Upload-Kennung und einen maßgeblichen Offset oder eine maßgebliche Teileliste. Wer sich nur auf den lokalen Fortschritt des Clients verlässt, kann nach einer verlorenen Antwort Bytes überspringen.
- Retries sollten idempotent oder durch Prüfsummen verifiziert sein, da ein Server einen Block bereits gespeichert haben kann, auch wenn die Bestätigung den Client nie erreicht hat.
- Gültige Einzelteile belegen noch keine gültige Datei. Beim Abschluss müssen die Reihenfolge, die erwartete Gesamtlänge und vorzugsweise ein Hashwert für das gesamte Objekt geprüft werden, bevor die nachgelagerte Verarbeitung beginnt.
Wann blockweise Uploads wichtig sind
Nutzen Sie blockweise Uploads für große Dateien oder Clients in instabilen Netzwerken, bei denen ein Neustart der Übertragung aufwendig wäre. Der Server muss die Reihenfolge und Größe der Blöcke sowie das abschließende Zusammensetzen validieren, sonst kann er unvollständige Dateien erzeugen.