在项目根目录运行:
composer dump-autoload
由于使用了本地路径仓库(packages/*/*),composer会自动识别新模块。
在 .env 文件中添加或修改以下配置:
# 设置默认上传磁盘为s3
IMAGE_UPLOAD_DISK=s3
# AWS S3 配置
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your-bucket-name
AWS_URL=https://your-bucket.s3.us-east-1.amazonaws.com
AWS_USE_PATH_STYLE_ENDPOINT=false
# 可选:设置最大上传大小(KB),默认5120KB (5MB)
IMAGE_UPLOAD_MAX_SIZE=5120
如果尚未安装AWS S3 SDK,运行:
composer require league/flysystem-aws-s3-v3 "^3.0"
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
登录管理后台后,访问:
/admin/image-upload
或者在菜单中添加链接到图片上传页面。
前端用户可以通过 API 上传图片:
POST /api/image-upload/uploadPOST /api/image-upload/upload-multipleDELETE /api/image-upload/deleteGET /api/image-upload/url详细的前端使用示例请查看 FRONTEND_EXAMPLES.md
运行以下命令查看路由:
php artisan route:list | grep image-upload
应该看到以下路由:
/admin/image-upload如果看到类似 Class "Longyi\ImageUpload\Services\ImageUploadService" not found 的错误:
composer dump-autoload
php artisan clear-compiled
如果遇到S3连接问题:
.env 中的AWS配置是否正确php artisan tinker
>>> Storage::disk('s3')->put('test.txt', 'test')
确保存储目录有正确的权限:
chmod -R 775 storage
chmod -R 775 bootstrap/cache
检查以下内容:
PHP上传限制 (php.ini):
upload_max_filesize = 10M
post_max_size = 10M
Laravel验证规则中的文件大小限制
查看日志文件:
tail -f storage/logs/laravel.log
如果想使用本地存储而不是S3,修改 .env:
IMAGE_UPLOAD_DISK=public
然后运行:
php artisan storage:link
使用curl测试上传API:
curl -X POST http://your-domain.com/admin/image-upload/upload \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "image=@/path/to/image.jpg" \
-F "directory=test/uploads"
curl -X POST http://your-domain.com/admin/image-upload/upload-multiple \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "images[]=@/path/to/image1.jpg" \
-F "images[]=@/path/to/image2.jpg" \
-F "directory=test/uploads"
如有问题,请联系:dev@longyi.com