Laravel + Transloadit
Envía una subida validada de Laravel a un Template fijo de Transloadit con el SDK oficial de PHP y credenciales del lado del servidor.
Receta ejecutable
Crea la integración
Este controlador valida un archivo subido, inicia un Template fijo mediante el SDK de PHP y devuelve el ID de la Assembly o un error saneado.
- Instala el SDK de PHP y crea un Template de Transloadit.
- Añade los tres valores de entorno y mapéalos en config/services.php.
- Registra una ruta POST para el controlador y envía un campo de archivo multipart llamado file.
Instalar
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);
}
}Autenticación
- Guarda la Auth Key, el Auth Secret y el ID del Template de Transloadit en la configuración de entorno de Laravel y léelos mediante config/services.php.
- El SDK oficial de PHP firma automáticamente las solicitudes de Assembly cuando se proporcionan tanto la clave como el secreto.
- Valida los archivos subidos y aplica la autorización de tu aplicación antes de enviar un archivo del lado del servidor a Transloadit.
Limitaciones y notas operativas
- createAssembly inicia la Assembly, pero no hace que un procesamiento largo sea síncrono. Devuelve el ID de la Assembly y usa webhooks o la consulta del estado para detectar la finalización.
- El ejemplo realiza la subida a través del servidor de Laravel. Para subidas grandes desde el navegador, usa Uppy para enviar los bytes directamente a Transloadit y deja que Laravel solo autorice las firmas.
- La validación de archivos de Laravel y los límites de tu Template de Transloadit son controles independientes; configura ambos según la misma política de producto.
Más integraciones