Von Filestack zu Transloadit migrieren
Filestack vereint Dateiauswahl, Upload, Transformationen, Workflows und Storage. Bei Transloadit übernimmt Uppy die Dateiauswahl im Browser, und Robots übernehmen die Dateiverarbeitung. Definieren Sie einen unterstützten Workflow in einem Template und erstellen Sie dann Assemblies mit einem SDK, Uppy oder der REST API. Prüfen Sie jede Aufgabe, die Ihre Anwendung nutzt, einzeln; die folgende Zuordnung verspricht keine vollständige Funktionsgleichheit.
Migrationsübersicht
| Filestack-Konzept | Entsprechung bei Transloadit |
|---|---|
| Picker | Uppy mit Transloadit |
| Upload | 🤖/upload/handle |
| Transformationsaufgabe | Robot-Step in einem Template |
| Bildkonvertierung/Größenänderung | 🤖/image/resize |
| Dokumentvorschau | 🤖/document/thumbs oder 🤖/file/preview (English) (Beta) |
| Virenscan | 🤖/file/virusscan |
| Workflow | Transloadit-Template |
| Storage-Aliase | Zugangsdaten von Drittanbietern sowie ein Export-Robot |
| Webhook | Assembly Notification |
Ein Template pro Workflow erstellen
Dieses Template prüft den erkannten MIME-Typ, erstellt ein Thumbnail für Bilder oder ein Thumbnail
der ersten PDF-Seite und speichert akzeptierte Originale und Vorschauen. Andere MIME-Typen stoppen
die Assembly mit einem Fehler. Dies ist eine Typfilterung, kein Malware-Scan; fügen Sie
/file/virusscan hinzu, wenn Ihr Workflow einen solchen Scan erfordert:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"accepted_files": {
"use": ":original",
"robot": "/file/filter",
"accepts": [["${file.mime}", "regex", "^(image/[^/]+|application/pdf)$"]],
"error_on_decline": true
},
"images": {
"use": "accepted_files",
"robot": "/file/filter",
"accepts": [["${file.mime}", "regex", "^image/"]]
},
"pdfs": {
"use": "accepted_files",
"robot": "/file/filter",
"accepts": [["${file.mime}", "=", "application/pdf"]]
},
"image_thumb": {
"use": "images",
"robot": "/image/resize",
"width": 600,
"height": 600,
"resize_strategy": "fit",
"format": "webp",
"result": true
},
"document_thumb": {
"use": "pdfs",
"robot": "/document/thumbs",
"format": "jpg",
"page": 1,
"width": 600,
"resize_strategy": "fit",
"result": true
},
"exported": {
"use": ["accepted_files", "image_thumb", "document_thumb"],
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "filestack-import/${unique_prefix}/${file.url_name}",
"url_prefix": "https://cdn.example.com/",
"acl": "bucket-default"
}
}
}
Die beiden Routing-Filter nutzen MIME-Typen, um Bilder und PDFs auf getrennten Vorschau-Zweigen zu halten. Abgelehnte Originale gelangen nie in den Export-Step. Eine Assembly ist keine Transaktion: Bereits exportierte akzeptierte Dateien werden nicht zurückgerollt, wenn eine andere Datei fehlschlägt. Das Ignorieren von Fehlern unterdrückt Fehlschläge; es ersetzt weder Routing noch Validierung.
Protokollieren Sie die Storage-Objekte, die jeder Backfill-Versuch schreibt. Bevor Sie eine fehlgeschlagene Assembly erneut ausführen, gleichen Sie deren Teilexporte ab oder löschen Sie sie, damit Wiederholungen keine doppelten oder verwaisten Objekte hinterlassen. Veröffentlichen Sie fehlgeschlagene Versuche nicht in Ihrer Anwendung, auch wenn einige Dateien erfolgreich exportiert wurden.
Konfigurieren Sie Ihr CDN so, dass es aus dem Bucket-Root liest; url_prefix ändert nur die zurückgegebenen URLs.
acl: "bucket-default" sendet keine Objekt-ACL; konfigurieren Sie den Zugriff über
Ihre Bucket-Policy und den Origin-Zugriff Ihres CDN. Nach ASSEMBLY_COMPLETED lesen Sie akzeptierte Originale aus
results.accepted_files und Vorschauen aus results.image_thumb und results.document_thumb.
Der Export fügt unter den Steps, die in seinem Parameter use genannt sind, Einträge hinzu oder
aktualisiert sie, es sei denn, der jeweilige Step setzt explizit result: false. Speichern Sie nur Einträge
mit is_temp_url: false dauerhaft. Temporäre Transloadit-URLs laufen nach 24 Stunden ab; siehe
Ergebnisdateien speichern.
Dateiauswahl ersetzen
Ersetzen Sie bei Browser-Integrationen den Filestack-Picker durch Uppy. Uppy kann
lokale Dateien auswählen, Drag-and-drop-Uploads verarbeiten und Remote-Quellen anbinden. Das
Transloadit-Plugin sendet Dateien unter Verwendung Ihres Templates an eine Assembly. Aktivieren Sie
waitForEncoding, um fertige Verarbeitungsergebnisse im Browser zu erhalten, oder setzen Sie
notify_url in Ihrer signierten Assembly-Anfrage und verarbeiten Sie
Assembly Notifications in Ihrem Backend. Prüfen Sie die Signaturen der
Notifications und setzen Sie einen erfolgreichen Abschluss voraus, bevor Sie Ihre Datenbank
aktualisieren.
Bestehende Filestack-URLs importieren
Wenn bestehende Filestack-Handles zu HTTPS-URLs aufgelöst werden, migrieren Sie sie mit 🤖/http/import:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "${fields.filestack_url}"
},
"preview": {
"use": "imported",
"robot": "/file/preview",
"result": true
},
"exported": {
"use": ["imported", "preview"],
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "filestack-backfill/${unique_prefix}/${file.url_name}",
"acl": "bucket-default"
}
}
}
Wählen Sie autorisierte Werte für filestack_url aus dem Asset-Bestand Ihres Backends aus. /file/preview befindet
sich in der Beta und greift auf ein generisches Dateityp-Symbol zurück, wenn kein inhaltsbasiertes
Thumbnail erzeugt werden kann. Führen Sie Backfill-Läufe in begrenztem Umfang aus; /http/import akzeptiert
auch ein Array von URLs. Bewahren Sie Quell-Handles und URLs auf, bis Zugriff und Qualität des
abgeschlossenen Exports verifiziert sind. Private S3-Objekte erfordern einen autorisierten Download
oder Ihr konfiguriertes CDN. Das Import-Template gibt exportierte Dateien unter results.imported
und results.preview zurück.
Checkliste
- Erfassen Sie die Nutzung des Filestack-Pickers und alle Workflow-Aufgaben.
- Überführen Sie jeden Workflow in ein Transloadit-Template.
- Übertragen Sie Ihre Storage-Zugangsdaten in Zugangsdaten von Drittanbietern.
- Ersetzen Sie den Picker-Code durch Uppy und das Transloadit-Plugin.
- Speichern Sie exportierte Storage-URLs aus Assembly Notifications.
- Migrieren Sie bestehende Filestack-Dateien nachträglich mit
/http/import.