feat: [storage] R2 테넌트 파일 프록시 라우트 추가

- /storage/tenants/{path} 라우트 추가
- R2에서 스트리밍 방식으로 파일 제공
- 인증 불필요, Cache-Control 1일

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 10:13:50 +09:00
parent 8b7d932f00
commit ef591074c7

View File

@@ -38,6 +38,26 @@
]);
})->where('path', '.*');
// R2 테넌트 파일 프록시 (문서 템플릿 이미지 등, 인증 불필요, 캐시 1일)
Route::get('/storage/tenants/{path}', function (string $path) {
if (! Storage::disk('r2')->exists($path)) {
abort(404);
}
$mime = Storage::disk('r2')->mimeType($path);
$stream = Storage::disk('r2')->readStream($path);
return response()->stream(function () use ($stream) {
fpassthru($stream);
if (is_resource($stream)) {
fclose($stream);
}
}, 200, [
'Content-Type' => $mime,
'Cache-Control' => 'public, max-age=86400',
]);
})->where('path', '.*');
// Swagger 설정
Route::get('/docs/api-docs.json', function () {
return response()->file(storage_path('api-docs/api-docs.json'));