Wichtigste Erkenntnisse
- Bewahren Sie das Auth Secret auf einem vertrauenswürdigen Server auf und übergeben Sie es über Umgebungsvariablen.
- Erstellen Sie eine Assembly mit einem Upload-Step und einem Image-Resize-Step, der das Bild auf 400 × 400 Pixel einpasst.
- Geben Sie sowohl die Ergebnis-URL als auch die Assembly-ID aus, damit sich der erste Durchlauf leicht prüfen lässt.
Die kürzeste sinnvolle Transloadit-Integration ist ein serverseitiges Skript, das ein Bild hochlädt und ein Derivat erzeugt. Es beweist, dass Zugangsdaten, Dateiübertragung, Verarbeitung und Ergebnisbehandlung funktionieren, bevor ein Browser, ein Speicherziel, eine Datenbank oder ein Webhook weitere bewegliche Teile hinzufügen.
Worauf es besonders ankommt
- Behandeln Sie die zurückgegebene Datei als temporär, bis ein Export-Step sie dauerhaft speichert.
Mit einem vertrauenswürdigen Serverprozess beginnen
Erstellen Sie einen kostenlosen Workspace, öffnen Sie die Seite mit den Zugangsdaten und generieren Sie einen Auth Key sowie ein Auth Secret. Für diesen serverseitigen Schnelleinstieg benötigen Sie beide Werte. Fügen Sie keinen der beiden Werte in die Quelldatei ein, und senden Sie das Secret niemals an einen Browser. Das Node-SDK nutzt das Paar, um Anfragen zu authentifizieren, ohne das Auth Secret als Anfrage-Zugangsdaten zu übertragen.
Wählen Sie ein kleines JPEG-, PNG-, WebP- oder AVIF-Bild, das bereits auf der Festplatte liegt. Eine bescheidene Eingabe hält den ersten Durchlauf schnell und macht die Ausgabe leicht erkennbar. Das Skript nimmt den Dateipfad als einziges Kommandozeilenargument entgegen, sodass derselbe Code mit anderen Testdaten erneut ausgeführt werden kann, ohne ihn zu bearbeiten.
Auth Key
Identifiziert die für die Assembly verwendeten Zugangsdaten und kann sicher von vertrauenswürdigem Integrationscode referenziert werden.
Auth Secret
Verbleibt in der Serverumgebung und wird vom SDK zur Authentifizierung der Anfrage verwendet.
Eine lokale Datei
Hält diesen Durchlauf auf den API-Pfad fokussiert statt auf Browser-Upload-Status oder Remote-Importe.
Das SDK installieren und den Befehl vorbereiten
Erstellen Sie ein leeres ES-Modul-Projekt und fügen Sie das aktuelle Node-SDK mit npm hinzu. Speichern Sie im nächsten Abschnitt das TypeScript-Listing als quickstart.ts und führen Sie es anschließend mit dem nach dem Listing gezeigten Befehl aus. Dieser Schnelleinstieg führt die TypeScript-Datei mit Nodes nativem Type Stripping direkt aus und benötigt daher weder tsx noch ts-node. Natives Type Stripping ist ab Node 22.18 und Node 23.6 standardmäßig aktiviert, verwenden Sie also Node 22.18+, Node 23.6+ oder Node 24. Das SDK und das Bild sind die einzigen Laufzeit-Eingaben.
Übergeben Sie die Zugangsdaten über Umgebungsvariablen an den Prozess. Shell-Verlauf, Prozessinspektion, CI-Logs und lokale Rechnerrichtlinien beeinflussen alle, ob Inline-Umgebungszuweisungen angemessen sind, verwenden Sie also für die Produktion Ihren üblichen Secret-Manager. Der hier gezeigte Befehl ist bewusst lokal und kurzlebig.
mkdir transloadit-quickstart
cd transloadit-quickstart
npm init -y
npm pkg set type=module
npm install @transloadit/nodeEine Abhängigkeit
@transloadit/node übernimmt Authentifizierung, Datei-Upload, Status-Polling und typisierte Antworten.
Node 24
Führt die TypeScript-Datei direkt aus und bewahrt dabei ein kopierbares typisiertes Beispiel.
Keine Secret-Datei erforderlich
Der Schnelleinstieg liest die beiden Zugangsdaten aus der Prozessumgebung.
Die erste Assembly ausführen
Speichern Sie das folgende TypeScript-Listing als quickstart.ts. Der :original-Step nimmt den Upload entgegen. Der resized-Step verweist mit use auf :original und startet daher erst, nachdem der Upload eine Datei erzeugt hat. Seine resize_strategy ist fit, wodurch das Seitenverhältnis erhalten bleibt und beide Abmessungen innerhalb von 400 Pixeln bleiben, statt das Bild auf ein Quadrat zuzuschneiden.
Mit aktiviertem waitForCompletion gibt createAssembly erst zurück, wenn die Assembly einen Endzustand erreicht hat. Dieses blockierende Verhalten macht das erste Ergebnis anschaulich, ist aber eine didaktische Vereinfachung und keine Standardarchitektur für langsame Videos, große Batches oder einen Request-Handler mit kurzem Timeout.
import { Transloadit } from '@transloadit/node'
async function main(): Promise<void> {
const authKey = process.env.TRANSLOADIT_KEY
const authSecret = process.env.TRANSLOADIT_SECRET
const inputPath = process.argv[2]
if (authKey == null || authSecret == null || inputPath == null) {
throw new Error(
'Set TRANSLOADIT_KEY and TRANSLOADIT_SECRET, then pass an image path.',
)
}
const transloadit = new Transloadit({ authKey, authSecret })
const assembly = await transloadit.createAssembly({
files: { image: inputPath },
params: {
steps: {
':original': {
robot: '/upload/handle',
},
resized: {
use: ':original',
robot: '/image/resize',
result: true,
width: 400,
height: 400,
resize_strategy: 'fit',
},
},
},
waitForCompletion: true,
})
const result = assembly.results?.resized?.[0]
if (result == null) {
throw new Error(`Assembly ${assembly.assembly_id} produced no resized result.`)
}
console.log(`Result: ${result.ssl_url}`)
console.log(`Assembly: ${assembly.assembly_id}`)
}
main().catch((error: unknown) => {
if (!(error instanceof Error)) {
throw new Error(`Was thrown a non-error: ${error}`)
}
console.error(error.message)
process.exit(1)
})env \
TRANSLOADIT_KEY="YOUR_TRANSLOADIT_KEY" \
TRANSLOADIT_SECRET="YOUR_TRANSLOADIT_SECRET" \
node quickstart.ts ./your-image.jpg:original
Der reservierte Upload-Step, der eingehende Dateien für nachfolgende Robots verfügbar macht.
resized
Ein von der Integration gewählter Name; er wird zugleich zum Schlüssel, mit dem diese Ergebnisdateien ausgelesen werden.
fit
Begrenzt die Ausgabe, ohne den Bildinhalt zu strecken oder zu entfernen.
Das Ergebnis prüfen, statt beim Erfolg stehenzubleiben
Öffnen Sie die ausgegebene HTTPS-Ergebnis-URL und prüfen Sie, ob Abmessungen und sichtbarer Inhalt der Anfrage entsprechen. Öffnen Sie dann die Assembly anhand ihrer ID in der Transloadit Console. Der Assembly Status zeigt Uploads, Step-Ergebnisse, Zeitstempel, Metadaten und etwaige Fehler und ist damit die erste Anlaufstelle, um abzugleichen, was die Anwendung angefordert hat, mit dem, was die Plattform tatsächlich ausgeführt hat.
Notieren Sie die Assembly-ID zusammen mit Ihrer eigenen Auftrags- oder Asset-Kennung. Eine URL allein reicht zur Fehlersuche nicht aus, da sie nicht erklärt, welche Eingabe, welche Parameter oder welcher Step sie erzeugt hat. Speichern Sie in der Produktion die konkreten Ergebnisfelder, die Ihre Anwendung benötigt, statt eine rohe Antwort eines Drittanbieters vollständig zu speichern oder zurückzugeben.
Visuelle Prüfung
Bestätigt, dass der Workflow die beabsichtigte Variante erzeugt hat, und nicht nur einen erfolgreichen Statuscode.
Assembly Status
Liefert die Verarbeitungsspur und Metadaten für Debugging und Abgleich.
Anwendungsdatensatz
Verknüpft die externe Assembly-ID mit dem Nutzer, der Eingabe und der Geschäftsaktion, die sie ausgelöst hat.
Den Nachweis in eine Produktionsintegration verwandeln
Temporäre Assembly-Dateien werden etwa 24 Stunden lang aufbewahrt und sind für eine begrenzte Anzahl kurzfristiger Abrufe gedacht, nicht für die direkte Auslieferung an Endnutzer. Bevor ein Ergebnis dauerhaft wird, fügen Sie einen Export-Robot hinzu, etwa /s3/store, /azure/store oder das Ziel, das Ihrer Anwendung gehört. Speichern Sie Cloud-Schlüssel als Template-Zugangsdaten, nicht als literale Werte im Anwendungscode oder in den Assembly Instructions.
Speichern Sie die Steps als Template, setzen Sie allow_steps_override auf false, wenn Aufrufer den Graphen nicht ändern dürfen, und senden Sie nur dessen template_id sowie validierte Felder. Browser-Uploads benötigen signierte, ablaufende Parameter, die von einem Backend erzeugt werden. Hintergrundverarbeitung sollte sofort eine Anwendungs-Auftrags-ID zurückgeben, einen verifizierten Webhook verarbeiten, doppelte Zustellungen sicher akzeptieren und den Abgleich über Assembly Status vornehmen, wenn eine Benachrichtigung ausbleibt.
Dauerhafter Export
Verschiebt Ergebnisse aus dem standardmäßigen temporären Aufbewahrungsfenster in eigenen Speicher.
Gespeichertes Template
Hält den Verarbeitungsgraphen kontrolliert, während Integrationen eine kompakte Template-ID übermitteln.
Verifizierter Abschluss
Ein signierter Webhook und regelmäßiger Abgleich machen lang laufende Aufträge wiederherstellbar.
Sicheren Status bereitstellen, Diagnosen schützen und einen Smoke-Test beibehalten
Eine Produktionsoberfläche sollte einen knappen, anwendungseigenen Status wie „in der Warteschlange“, „in Bearbeitung“, „bereit“ oder „fehlgeschlagen“ anzeigen. Betreiber benötigen weiterhin einen geschützten Pfad von diesem Datensatz zur Assembly-ID und zu bereinigten Diagnosedaten. Geben Sie Endnutzern keine rohen Anbieterfehler, Stack-Traces, Speicherantworten oder URLs mit eingebetteten Zugangsdaten zurück, nur weil der Schnelleinstieg ein Ergebnis auf einem Terminal ausgibt.
Bewahren Sie ein kleines, bekanntermaßen funktionierendes Bild sowie die erwarteten Ausgabebeschränkungen als Smoke-Test auf. Führen Sie ihn nach einer Rotation der Zugangsdaten oder einer kontrollierten Workflow-Änderung aus, machen Sie aber keine kostenpflichtige externe Assembly zu einem Bestandteil jedes Unit-Test-Laufs. Unit-Tests sollten lokale Regeln und Zuordnungen prüfen, während ein expliziter Integrationstest die live gültigen Zugangsdaten, den Upload, den Robot und den Ergebnispfad gemeinsam belegt.
Sicherer Client-Zustand
Einen verwertbaren Status anzeigen, ohne eine Drittanbieter-Antwort oder interne Ausnahme preiszugeben.
Geschützter Pfad
Ermöglicht autorisierten Betreibern den Zugriff auf die Assembly-ID und die zur Untersuchung nötigen Diagnosedaten.
Bewährte Testdaten
Trennt echte Integrationsfehler von ungewöhnlichen Kundenmedien, wenn der Pfad getestet wird.
Wissenswerte technische Details
- Eine Assembly ist eine Ausführung von Assembly Instructions. Jeder Verarbeitungs-Step ruft einen Robot auf und deklariert seine vorgelagerte Eingabe über
use; der reservierte:original-Upload-Step ist die Quelle und benötigt keinuse. - Das Node-SDK generiert die Anfrage-Authentifizierung aus Auth Key und Auth Secret. Das Secret gehört ausschließlich in einen vertrauenswürdigen Serverprozess, niemals in Browser-JavaScript oder eine mobile Anwendung.
- Wird
waitForCompletionauf true gesetzt, fragt das SDK so lange ab, bis die Assembly einen Endzustand erreicht, was für einen kleinen ersten Testlauf praktisch, aber für lang laufende Request-Handler ungeeignet ist. - Das Flag
resultmarkiert die Dateien eines Steps zur Aufnahme in das übergeordneteresults-Objekt der Assembly. Es macht die Dateien nicht dauerhaft. - Temporäre Assembly-Dateien sind standardmäßig etwa 24 Stunden lang und für eine begrenzte Anzahl von Abrufen verfügbar. Liefern Sie ihre URLs nicht direkt an Endnutzer aus; fügen Sie für nutzerseitig sichtbare Dateien einen Export-Robot hinzu.
- Die Assembly-ID ist eine nützliche Referenz zur Fehlersuche, selbst wenn eine Anwendung ihre eigene übergeordnete Auftragskennung speichert.
Ein praxisnaher Ansatz
- 1
Erstellen Sie einen Auth Key und wählen Sie ein kleines lokales Bild aus.
- 2
Installieren Sie das Node-SDK und führen Sie den TypeScript-Schnelleinstieg mit Zugangsdaten in der Umgebung aus.
- 3
Öffnen Sie die ausgegebene Ergebnis-URL und prüfen Sie die Assembly in der Konsole.
- 4
Verlagern Sie den Workflow in ein gespeichertes Template und fügen Sie vor dem Produktionseinsatz dauerhaften Speicher hinzu.
Wann Transloadit hilfreich ist
Verwenden Sie das Node-SDK, um eine Assembly mit /upload/handle und /image/resize zu erstellen. Das SDK signiert die Anfrage mit serverseitigen Zugangsdaten, lädt die lokale Datei hoch, wartet auf den Abschluss und gibt die Ergebnis-URL sowie die Assembly-ID zurück.
Architekturgrenze
Dieser Schnelleinstieg läuft auf einem vertrauenswürdigen Server und wartet, bis ein kleines Bild fertig verarbeitet ist. Eine Browser-Integration muss signierte, kurzlebige Parameter von einem Backend erhalten, während produktive Hintergrundarbeit einen verifizierten Webhook verwenden sollte, statt eine HTTP-Anfrage offen zu halten.
Häufig gestellte Fragen
Kann ich das Auth Secret für diesen Schnelleinstieg in Browser-JavaScript einbetten?
Nein. Das Beispiel läuft serverseitig. Ein Browser sollte signierte, kurzlebige Assembly-Parameter von einem Backend anfordern, das das Auth Secret geheim hält.
Warum wartet das Skript auf den Abschluss?
waitForCompletion macht einen ersten Durchlauf leicht überprüfbar, indem es das fertige Ergebnis zurückgibt. Produktive Request-Handler sollten normalerweise Hintergrundarbeit starten und einen verifizierten Webhook oder kontrolliertes Status-Polling verwenden.
Wo wird das skalierte Bild gespeichert?
Es handelt sich um ein temporäres Assembly-Ergebnis, das standardmäßig 24 Stunden lang aufbewahrt wird. Fügen Sie einen Storage-Robot hinzu, um es dauerhaft an einem von Ihnen kontrollierten Ziel zu speichern.
Warum fit statt fillcrop verwenden?
fit erhält das komplette Bild und begrenzt es auf die angeforderte Box. fillcrop füllt exakte Abmessungen durch Zuschneiden, was eine bewusste Kompositionsentscheidung erfordert.
Was sollte ich nach Abschluss der Assembly speichern?
Speichern Sie die Assembly-ID, Ihre eigene Auftrags- oder Asset-ID, die ausgewählten Ergebnismetadaten mit dem dauerhaften Speicherort sowie einen bereinigten Endstatus. Geben Sie Clients standardmäßig nicht die gesamte Rohantwort preis.