Laravel + Transloadit
Envie um upload validado do Laravel para um Template fixo da Transloadit com o SDK PHP oficial e credenciais no servidor.
Receita executável
Criar a integração
Este controller valida um arquivo enviado por upload, inicia um Template fixo pelo SDK para PHP e retorna o Assembly ID resultante ou um erro sanitizado.
- Instale o SDK de PHP e crie um Template na Transloadit.
- Adicione os três valores de ambiente e mapeie-os em config/services.php.
- Registre uma rota POST para o controlador e envie um campo de arquivo multipart chamado 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);
}
}Autenticação
- Armazene a Auth Key, o Auth Secret e o Template ID da Transloadit na configuração de ambiente do Laravel e leia-os por meio de config/services.php.
- O SDK oficial para PHP assina as requisições de Assembly automaticamente quando a chave e o segredo são informados.
- Valide os arquivos enviados por upload e aplique as regras de autorização da sua aplicação antes de enviar um arquivo do lado do servidor para a Transloadit.
Limitações e observações operacionais
- createAssembly inicia a Assembly, mas não torna síncrono um processamento demorado. Retorne o Assembly ID e use webhooks ou a consulta de status para acompanhar a conclusão.
- O exemplo faz o upload pelo servidor Laravel. Para uploads grandes pelo navegador, use o Uppy para enviar os bytes diretamente à Transloadit e deixe o Laravel apenas autorizar as assinaturas.
- A validação de arquivos do Laravel e os limites do seu Template da Transloadit são controles separados; configure ambos para a mesma política do produto.
Mais integrações