Laravel + Transloadit
Senden Sie einen validierten Laravel-Upload mit dem offiziellen PHP SDK und serverseitigen Zugangsdaten an ein festes Transloadit Template.
Ausführbare Anleitung
Integration aufbauen
Dieser Controller validiert eine hochgeladene Datei, startet über das PHP-SDK ein festes Template und gibt die Assembly ID oder einen bereinigten Fehler zurück.
- Installieren Sie das PHP-SDK und erstellen Sie ein Transloadit-Template.
- Fügen Sie die drei Umgebungswerte hinzu und ordnen Sie sie in config/services.php zu.
- Registrieren Sie eine POST-Route für den Controller und senden Sie ein Multipart-Dateifeld namens file.
Installieren
composer require transloadit/php-sdkconfig/services.php
'transloadit' => [
'key' => env('TRANSLOADIT_KEY'),
'secret' => env('TRANSLOADIT_SECRET'),
'template_id' => env('TRANSLOADIT_TEMPLATE_ID'),
],app/Http/Controllers/MediaController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use transloadit\Transloadit;
class MediaController extends Controller
{
public function store(Request $request): JsonResponse
{
$validated = $request->validate([
'file' => ['required', 'file', 'max:102400'],
]);
$transloadit = new Transloadit([
'key' => config('services.transloadit.key'),
'secret' => config('services.transloadit.secret'),
]);
$assembly = $transloadit->createAssembly([
'files' => [$validated['file']->getRealPath()],
'params' => [
'template_id' => config('services.transloadit.template_id'),
],
]);
$hasSdkError = (bool) $assembly->error();
if ($hasSdkError || !isset($assembly->data['assembly_id'])) {
// Provider responses may contain secrets; log only a fixed failure category.
Log::warning('Transloadit Assembly creation failed', [
'reason' => $hasSdkError ? 'sdk_error' : 'missing_assembly_id',
]);
return response()->json(['error' => 'Could not start media processing'], 502);
}
return response()->json(['assembly_id' => $assembly->data['assembly_id']], 202);
}
}Authentifizierung
- Der Auth Key, das Auth Secret und die Template ID von Transloadit sollten in der Laravel-Umgebungskonfiguration gespeichert und über config/services.php ausgelesen werden.
- Das offizielle PHP-SDK signiert Assembly-Anfragen automatisch, wenn sowohl der Schlüssel als auch das Secret angegeben sind.
- Validieren Sie hochgeladene Dateien und setzen Sie die Autorisierungsregeln Ihrer Anwendung durch, bevor Sie eine serverseitige Datei an Transloadit senden.
Einschränkungen und Hinweise zum Betrieb
- createAssembly startet die Assembly, macht lange Verarbeitungen aber nicht synchron. Geben Sie die Assembly ID zurück und nutzen Sie Webhooks oder den Statusabruf, um den Abschluss festzustellen.
- Das Beispiel lädt über den Laravel-Server hoch. Verwenden Sie bei großen Browser-Uploads Uppy, um die Bytes direkt an Transloadit zu senden, und lassen Sie Laravel nur Signaturen autorisieren.
- Die Dateivalidierung von Laravel und die Limits Ihres Transloadit Templates sind getrennte Kontrollen; konfigurieren Sie beide für dieselbe Produktrichtlinie.
Weitere Integrationen