rollswan/centralized-attachment 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

rollswan/centralized-attachment

Composer 安装命令:

composer require rollswan/centralized-attachment

包简介

Provides centralized file management

README 文档

README

Provides centralized storing of file attachment.

How to use?

  1. Install composer require rollswan/centralized-attachment
  2. Migrate attachments table by running php artisan migrate
  3. Use WithAttachments trait in your controller

Example:

namespace App\Http\Controllers;

use Rollswan\CentralizedAttachment\Traits\WithAttachments;

class ArticleController extends Controller
{
    use WithAttachments;
}
  1. 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
            );
        }
    }
}    
  1. Use Attachment model 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');
    }
}
  1. 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 rollswan/centralized-attachment 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 87
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 8
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 4
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-12-04