devfelipereis / uploadtrait
一个简单的Laravel上传特性
dev-master
2019-01-16 13:31 UTC
This package is not auto-updated.
Last update: 2024-09-20 03:20:32 UTC
README
一个简单的Laravel上传特性。在开发环境中,它将上传到本地存储,在生产/预发布环境中则上传到S3存储桶。
对于生产环境,您需要按照Laravel文档设置S3作为您的默认云存储。
已测试与Laravel 5.4及以上版本兼容。但应与Laravel 5.x兼容。
注意:这是为我自己的设置制作的,效果良好。我喜欢开发时使用本地存储,生产时使用S3。请随意修改以满足您的需求 ;)
When not using s3, the generated url will be something like this: site.com/storage?path=something/something.jpg
Do not use this in production, it's only for dev.
It is vulnerable with Full Path Disclosure (https://www.owasp.org/index.php/Full_Path_Disclosure)
如何安装
composer require devfelipereis/uploadtrait:dev-master
如果您正在运行Laravel 5.4或以下版本,您需要将服务提供者添加到app.php配置文件中的providers数组,如下所示
DevFelipeReis\UploadTrait\UploadTraitServiceProvider::class
现在请看下面的示例,了解如何使用它。
示例
在您的模型中,设置上传的基础路径
... use DevFelipeReis\UploadTrait\UploadTrait; class Company extends Model { use UploadTrait; ... public function getBaseUploadFolderPath() { return 'companies/' . $this->id . '/'; } }
现在在您的控制器中...
public function store(CreateCompanyRequest $request) { ... $inputs = $request->except('logo'); $company = $this->companyRepository->create($inputs); // Company logo $company_logo = $request->file('logo'); if ($company_logo) { $company->logo = $company->uploadFile($company_logo); // $company->logo will be something like: companies/1/8e5dc57cb5d80532f52e13597c5f0b68.jpg } $company->save(); ... }
如何访问图片?
最后,在视图中
... <img id="logo-img" class="thumbnail preview-img" src="{{ $company->getUploadUrlFor('logo') }}"/> ...
如何删除图片?
也许您想要删除那张图片,可以尝试这样做
$company->deleteUploadFor('photo');