innoboxrr/s3-resumable-uploads
Composer 安装命令:
composer require innoboxrr/s3-resumable-uploads
包简介
Resumable Uploads for Laravel & AWS S3
README 文档
README
Este paquete permite gestionar cargas de archivos grandes en múltiples partes (multipart uploads) hacia Amazon S3, utilizando rutas prefirmadas, protección CSRF y un flujo controlado desde Laravel.
✨ Características
- Compatible con cualquier frontend (Vue, React, JS puro, etc.)
- Firmado de partes individualmente para mayor seguridad
- Soporte para reintentos y cargas pausadas
- Integración con AWS S3 (vía SDK oficial)
📂 Endpoints disponibles
El sistema se compone de 3 requests principales:
1. Iniciar carga (InitiateUploadRequest)
Método: POST
Ruta sugerida: /api/upload/initiate
Body:
{
"filename": "mi_archivo.pdf",
"file_identifier": "unico-uuid-o-hash"
}
Respuesta:
{
"upload_id": "ABC123XYZ..."
}
2. Firmar parte (SignPartUploadRequest)
Método: POST
Ruta sugerida: /api/upload/sign-part
Body:
{
"file_identifier": "unico-uuid-o-hash",
"upload_id": "ABC123XYZ...",
"part_number": 1
}
Respuesta:
{
"url": "https://s3.amazonaws.com/tu-bucket/..."
}
Este url es donde el frontend sube la parte directamente vía PUT.
3. Completar carga (CompleteUploadRequest)
Método: POST
Ruta sugerida: /api/upload/complete
Body:
{
"filename": "mi_archivo.pdf",
"file_identifier": "unico-uuid-o-hash",
"upload_id": "ABC123XYZ...",
"parts": [
{
"ETag": "\"etag-de-la-parte\"",
"PartNumber": 1
},
...
]
}
Respuesta:
{
"message": "Upload completed",
"url": "https://s3.amazonaws.com/tu-bucket/uploads/unico-uuid-o-hash/mi_archivo.pdf"
}
🧩 Cómo funciona internamente
CustomFormRequest
- Prepara y valida los datos comunes:
filename,file_identifier, y construye dinámicamente la clave (Key) donde se almacenará el archivo en S3. - Usa los traits
S3Clientpara instanciar el cliente AWS y obtener el bucket configurado.
getKey()
Construye el path completo del archivo en S3:
/uploads/{file_identifier}/{filename}
Este path puede ser configurado usando:
// config/s3resumableuploads.php return [ 'file_path' => 'uploads' ];
⚙️ Requisitos
- Laravel 8+
- AWS SDK configurado (
config/filesystems.php) - Credenciales válidas con permisos de
s3:PutObject,s3:AbortMultipartUpload,s3:CompleteMultipartUpload, etc.
🛠️ Instalación
composer require innoboxrr/s3-resumable-uploads
Agrega tus rutas:
Route::post('/api/upload/initiate', InitiateUploadRequest::class); Route::post('/api/upload/sign-part', SignPartUploadRequest::class); Route::post('/api/upload/complete', CompleteUploadRequest::class);
🔐 Seguridad
- Todas las rutas esperan un token CSRF (
_token) - Se recomienda validar autorización en cada
authorize()de los FormRequest según lógica propia del proyecto
📦 Estructura del paquete
Innoboxrr/
├── S3ResumableUploads/
│ ├── Http/
│ │ └── Requests/
│ │ └── S3Multipart/
│ │ ├── InitiateUploadRequest.php
│ │ ├── SignPartUploadRequest.php
│ │ ├── CompleteUploadRequest.php
│ └── Support/
│ └── Traits/
│ └── S3Client.php
¿Quieres que te genere también el archivo config/s3resumableuploads.php o los traits S3Client/s3Bucket() si aún no están definidos?
innoboxrr/s3-resumable-uploads 适用场景与选型建议
innoboxrr/s3-resumable-uploads 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 69 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 01 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 innoboxrr/s3-resumable-uploads 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 innoboxrr/s3-resumable-uploads 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 69
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 16
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-01-20