jeremybrammer/laravelimagetos3package

dev-master 2020-10-25 17:07 UTC

This package is auto-updated.

Last update: 2024-09-26 01:30:32 UTC


README

Latest Version on Packagist Total Downloads Build Status

一个简单的Laravel包,用于处理图像上传。此包将为图像创建数据库迁移,上传、调整大小、存储在s3上,并预签CloudFront URL!

链接

此存储库的安装步骤

安装composer项目

composer install

需要此包。

composer require jeremybrammer/laravelimagetos3package

发布包的配置文件。它为依赖项发布一个配置文件。

php artisan vendor:publish --provider="jeremybrammer\laravelimagetos3package\laravelimagetos3packageServiceProvider"

迁移数据库以创建新的图像上传数据库表。

php artisan migrate

在.env文件中更改/添加以下行

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
AWS_URL=
CLOUDFRONT_PRIVATE_KEY_PATH=keys/my_key.pem
CLOUDFRONT_KEY_PAIR_ID=

(将您的CloudFront密钥添加到/storage/keys/my_key.pem。这应该已经被.gitignored。)

根据您的服务器配置,根据需要增加nginx.conf和php.ini设置,以允许更大的图像上传和内存限制。

控制器中的包使用

包含Laravel的Request类,以及我包中的以下类、模型和外观。

use Illuminate\Http\Request;
use jeremybrammer\laravelimagetos3package\laravelimagetos3package;
use jeremybrammer\laravelimagetos3package\Models\ImageUpload;
use jeremybrammer\laravelimagetos3package\Facades\LaravelImageToS3PackageFacade;

获取所有以前上传的图像并为缩略图预签CloudFront URL。

LaravelImageToS3PackageFacade::getAllUploadedImages(); 

可选地覆盖上传服务中的图像大小设置。

LaravelImageToS3PackageFacade::setWidthByImageType("thumbnail", 100);
LaravelImageToS3PackageFacade::setWidthByImageType("small", 200);

使用请求、HTML图像字段名称属性和s3中存储的文件夹调用上传处理程序。

LaravelImageToS3PackageFacade::handUploadRequest($request, "image-upload-field", "victorycto/images");

一个控制器示例,用于使用路由模型绑定查看单个图像,该示例使用我的Eloquent模型

public function view(ImageUpload $imageUpload, $imagetype){
    //Use route-model binding for the image object, and an image type to get the proper size.
    switch($imagetype){
        case "thumbnail": $url = $imageUpload->thumbnail_image_url; break;
        case "small": $url = $imageUpload->small_image_url; break;
        case "original": $url = $imageUpload->original_image_url; break;
        default: return; break;
    }
    // $imageURL = $this->imagetos3->preSignS3Url($imageUpload->original_image_url); //Sign s3 URL.
    $imageURL = LaravelImageToS3PackageFacade::preSignCloudFrontUrl($url); //Sign CloudFront URL.
    return view("imageuploads.view", ["imageURL" => $imageURL]);
}

享受吧!

变更日志

请参阅changelog以获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅contributing.md以获取详细信息和工作列表。

安全

如果您发现任何与安全相关的问题,请通过作者电子邮件而不是使用问题跟踪器来报告。

致谢

许可

许可。请参阅许可文件以获取更多信息。