hollogram/laravel-stapler2
Composer 安装命令:
composer require hollogram/laravel-stapler2
包简介
Easy file upload management for the Laravel Framework.
README 文档
README
Laravel-Stapler is a Stapler-based file upload package for the Laravel framework. It provides a full set of Laravel commands, a migration generator, and a cascading package config on top of the Stapler package. It also bootstraps Stapler with very sensible defaults for use with Laravel. If you are wanting to use Stapler with Laravel, it is strongly recommended that you use this package to do so.
Laravel-Stapler was created by Travis Bennett.
- Requirements
- Installation
- Deprecations
- Migrating From Stapler v1.0.0-Beta4
- Quick Start
- Commands
- Troubleshooting
- Contributing
Requirements
This package currently requires php >= 5.4 as well as Laravel >= 4. If you're going to be performing image processing as part of your file upload, you'll also need GD, Gmagick, or Imagick (your preference) installed as part of your php environment.
Installation
Laravel-Stapler is distributed as a composer package, which is how it should be used in your app.
Install the package using Composer. Edit your project's composer.json file to require codesleeve/laravel-stapler.
"require": { "laravel/framework": "4.*", "hollogram/laravel-stapler": "1.0.*" }
Once this operation completes, the final step is to add the service provider.
For Laravel 4, Open app/config/app.php, and add a new item to the providers array:
'Hollogram\LaravelStapler\Providers\L4ServiceProvider'
For Laravel 5, Open config/app.php, and add a new item to the providers array:
'Hollogram\LaravelStapler\Providers\L5ServiceProvider'
Deprecations
As of 1.0.04, the 'Hollogram\LaravelStapler\LaravelStaplerServiceProvider' service provider has been deprecated (this provider will be removed in the next major release). Instead, you should now be using the corresponding service provider for the specific version of Laravel that you're using.
migrating-from-Stapler-v1.0.0-Beta4
If you've been using Stapler (prior to v1.0.0-Beta4) in your Laravel app, you now need to be using this package instead. Uninstall Stapler (remove it from your composer.json, remove the service provider, etc) and install this package following the instructions above. Once installed, the following changes may need need to be made in your application:
-
In your models that are using Stapler, change
use Hollogram\Stapler\Staplertouse Hollogram\Stapler\ORM\EloquentTrait. Your models will also need to implementHollogram\Stapler\ORM\StaplerableInterface. -
If you published stapler's config, you'll need to rename config folder from
app/config/packages/codesleeve/staplertoapp/config/packages/codesleeve/laravel-stapler. -
Image processing libraries are now referenced by their full class name from the Imagine Image package (e.g
gdis now reference byImagine\Gd\Imagine). -
In your s3 configuration, instead of passing 'key', 'secret', 'region', and 'scheme' options, you'll now need to pass a single 's3_client_config' array containing these options (and any others you might want). These will be passed directly to the s3ClientFactory when creating an S3 client. Passing the params as an array now allows you to configure your s3 client (for a given model/attachment) however you like. See: http://docs.aws.amazon.com/aws-sdk-php/guide/latest/configuration.html#client-configuration-options
-
In your s3 configuration, instead of passing 'Bucket' and 'ACL', you'll now need to pass a single 's3_object_config' array containing these values (this is used by the S3Client::putObject() method). See: http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html#_putObject
-
The ':laravel_root' interpolation has been changed to ':app_root'
Quickstart
In the document root of your application (most likely the public folder), create a folder named system and
grant your application write permissions to it. For this, we're assuming the existence of an existing User model in which we're going to add an avatar image to.
In your model:
use Hollogram\Stapler\ORM\StaplerableInterface; use Hollogram\Stapler\ORM\EloquentTrait; class User extends Eloquent implements StaplerableInterface { use EloquentTrait; // Add the 'avatar' attachment to the fillable array so that it's mass-assignable on this model. protected $fillable = ['avatar', 'first_name', 'last_name']; public function __construct(array $attributes = array()) { $this->hasAttachedFile('avatar', [ 'styles' => [ 'medium' => '300x300', 'thumb' => '100x100' ] ]); parent::__construct($attributes); } }
Make sure that the
hasAttachedFile()method is called right beforeparent::__construct()of your model.
From the command line, use the migration generator:
php artisan stapler:fasten users avatar php artisan migrate
In your new view:
<?= Form::open(['url' => action('UsersController@store'), 'method' => 'POST', 'files' => true]) ?> <?= Form::input('first_name') ?> <?= Form::input('last_name') ?> <?= Form::file('avatar') ?> <?= Form::submit('save') ?> <?= Form::close() ?>
In your controller:
public function store() { // Create and save a new user, mass assigning all of the input fields (including the 'avatar' file field). $user = User::create(Input::all()); }
In your show view:
<img src="<?= $user->avatar->url() ?>" > <img src="<?= $user->avatar->url('medium') ?>" > <img src="<?= $user->avatar->url('thumb') ?>" >
To detach (reset) a file, simply assign the constant STAPLER_NULL to the attachment and the save):
$user->avatar = STAPLER_NULL; $user->save();
This will ensure the the corresponding attachment fields in the database table record are cleared and the current file is removed from storage. The database table record itself will not be destroyed and can be used normally (or even assigned a new file upload) as needed.
Commands
fasten
This package provides a fasten command that can be used to generate migrations for adding image file fields to existing tables. The method signature for this command looks like this:
php artisan stapler:fasten <tablename> <attachment>
In the quickstart example above, calling
php artisan stapler:fasten users avatar followed by php artisan migrate added the following fields to the users table:
- (string) avatar_file_name
- (integer) avatar_file_size
- (string) avatar_content_type
- (timestamp) avatar_updated_at
refresh
The refresh command can be used to reprocess uploaded images on a model's attachments. It works by calling the reprocess() method on each of the model's attachments (or on specific attachments only). This is very useful for adding new styles to an existing attachment when a file has already been uploaded for that attachment.
Reprocess all attachments for the ProfilePicture model:
php artisan stapler:refresh ProfilePicture
Reprocess only the photo attachment on the ProfilePicture model:
php artisan stapler:refresh TestPhoto --attachments="photo"
Reprocess a list of attachments on the ProfilePicture model:
php artisan stapler:refresh TestPhoto --attachments="foo, bar, baz, etc"
Troubleshooting
Before you submit an issue or create a pull request, please take a look at the Troubleshooting Section section of the Stapler package. There's a very good chance that many (if not all) of the issues you're having with this package are related to the base stapler package and have already been addressed there.
Contributing
This package is always open to contributions:
- Master will always contain the newest work (bug fixes, new features, etc), however it may not always be stable; use at your own risk. Every new tagged release will come from the work done on master, once things have stablized, etc.
hollogram/laravel-stapler2 适用场景与选型建议
hollogram/laravel-stapler2 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 306 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 02 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「file」 「s3」 「upload」 「aws」 「laravel」 「paperclip」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 hollogram/laravel-stapler2 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hollogram/laravel-stapler2 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 hollogram/laravel-stapler2 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
This package includes a script and fail2ban configuration that allows you to use fail2ban when utilizing AWS elastic load balancer (ELB) and an apache webserver.
Elastic Driver for Laravel Scout
simple api library.
A replica of the AWS Elastic Beanstalk worker SQS daemon (sqsd) in PHP
Laravel Media Popup to upload/view the files
统计信息
- 总下载量: 306
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-02-12