rollswan/centralized-attachment
Composer 安装命令:
composer require rollswan/centralized-attachment
包简介
Provides centralized file management
README 文档
README
Provides centralized storing of file attachment.
How to use?
- Install
composer require rollswan/centralized-attachment - Migrate
attachmentstable by runningphp artisan migrate - Use
WithAttachmentstrait in your controller
Example:
namespace App\Http\Controllers;
use Rollswan\CentralizedAttachment\Traits\WithAttachments;
class ArticleController extends Controller
{
use WithAttachments;
}
- Use
storeAttachment()method in controller,
Example:
$this->storeAttachment(
$file, // This is for the attach file or generated file
$folderName, // Attach file will store in the /storage/app/<folder-name> (for s3, bucket-name/<folder-name>)
'App\Models\ModelName', // Owner Model
$ownerModel, // Owner Model ID
$generatedFileExtName, // Optional Param, To check whether the attach file is coming from file upload or generated file. Note: Set this file extension name argument if the attach file is generated/created file
$disk // Optional Param, The default value is local disk. Simply change the filesystem disk if you wish to switch between the configured storage options
);
namespace App\Http\Controllers;
use Rollswan\CentralizedAttachment\Models\Attachment;
use Rollswan\CentralizedAttachment\Traits\WithAttachments;
class ArticleController extends Controller
{
use WithAttachments;
/**
* Creates a new article.
*
* @param CreateArticleRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function create(CreateArticleRequest $request)
{
// Create the article
$article = Article::create($request->except('_token'));
// Process attachments, if any
if (!empty($request->attachments)) {
$this->storeArticleAttachments($article->id, $request->attachments);
}
session()->flash('success', "Article has been successfully created.");
return back();
}
/**
* Store article attachments.
*
* @param integer $articleId
* @param \Illuminate\Http\UploadedFile $attachments
*/
private function storeArticleAttachments($articleId, $attachments)
{
foreach ($request->attachments as $attachment) {
$this->storeAttachment(
$attachment,
'articles',
'App\Models\Article',
$articleId
);
}
}
}
- Use
Attachmentmodel in controller
Example:
namespace App\Http\Controllers;
use Rollswan\CentralizedAttachment\Models\Attachment;
use Rollswan\CentralizedAttachment\Traits\WithAttachments;
class ArticleController extends Controller
{
use WithAttachments;
/**
* View attachment.
*
* @param string $uuid
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
*/
public function viewAttachment($uuid)
{
$attachment = Attachment::find($uuid);
if (!$attachment) {
abort(404);
}
return $this->streamAttachment($attachment, 'application/pdf');
}
}
- Use
deleteAttachment()method in controller
Example:
namespace App\Http\Controllers;
use Rollswan\CentralizedAttachment\Models\Attachment;
use Rollswan\CentralizedAttachment\Traits\WithAttachments;
class ArticleController extends Controller
{
/**
* Delete article attachments.
*
* @param integer $articleId
*/
private function deleteArticleAttachment($articleId)
{
// Get the article attachments
$attachments = Attachment::where('owner_model', 'App\Models\Article')
->where('owner_id', $articleId)
->get();
foreach ($attachments as $attachment) {
$this->deleteAttachment($attachment);
}
}
}
rollswan/centralized-attachment 适用场景与选型建议
rollswan/centralized-attachment 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 87 次下载、GitHub Stars 达 4, 最近一次更新时间为 2020 年 12 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 rollswan/centralized-attachment 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rollswan/centralized-attachment 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 87
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-12-04