Laravel admin 多图七牛扩展,异步、可拖拽顺序、可删除

以前用 laravel admin 写后台,最大的阻力之一,就是图片

尽管官方有 multipleImages 可以支持多图,但发现顺序无法拖拽,重新编辑图片会不见,代码又要重写等

于是乎,又又又撸了个轮子

项目地址 : https://github.com/Hanson/laravel-admin-qi... (例行求 star )

laravel-admin-qiniu

Laravel admin 框架的七牛 qiniu 多图上传扩展,可拖拽,异步上传图片,支持删除

1_7M_G0VFANP6HK48EEL2QO.png

__FP8P8`VX`LN_Y3__4K762.png

安装

composer require hanson/laravel-admin-qiniu:dev-master -vvv

配置

config/filesystems.php 增加一个 disk

<?php

return [
   'disks' => [
        //...
        'qiniu' => [
           'driver'     => 'qiniu',
           'access_key' => env('QINIU_ACCESS_KEY', 'xxxxxxxxxxxxxxxx'),
           'secret_key' => env('QINIU_SECRET_KEY', 'xxxxxxxxxxxxxxxx'),
           'bucket'     => env('QINIU_BUCKET', 'xxx'),
           'domain'     => env('QINIU_DOMAIN', 'xxx.clouddn.com'), // or host: https://xxxx.clouddn.com
        ],
        //...
    ]
];

使用

<?php

$form = new \Encore\Admin\Form(new Goods);

$form->qiniuImages('column', '商品图')->sortable(); // 普通用法

$form->qiniuImages('column', '商品图')
    ->sortable() // 让图片可以拖拽排序
    ->extraData(['disk' => 'qiniu2', 'path' => 'avatar']) // 假如你有多个七牛配置,可以通过指定此处的 disk 进行上传, path 为文件路径的前缀
    ->value(['http://url.com/a.jpg', 'http://url.com/b.jpg']); // 默认显示的图片数组,必须为 url

$form->saving(function (\Encore\Admin\Form $form) {
    $paths = \Hanson\LaravelAdminQiniu\Qiniu::getPaths(request('qiniu_column')); // 需要 qiniu_ 作为前缀的字段
});
本作品采用《CC 协议》,转载必须注明作者和本文链接
❤️ 微信生态自动智能化方案加微信:hansonskr ❤️ 备注:vbot
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8
takashiki

要是前端组件和数据存储能解耦就更好了

4年前 评论
Summer

多产哈

4年前 评论

@Summer 宅在家就先磨刀

4年前 评论

可以用阿里oss 吗?

4年前 评论

@liaosp 我这个项目不支持,要兼容的话需要改,我会考虑一下

4年前 评论

传图片可以本地存一份文件md5和文件地址的记录表吗?上传的新文件的时候 先检测自己库里是否已经有了 如果有了直接返回,没有再传~

用了下,发现有点问题(我的lv-admin是1.7.13)

/**
     * 由于修改了下面方法的 value ,这里需要重新取出 URL,去掉 key
     *
     * @return array
     */
    protected function preview()
    {
        return array_values($this->value ?? []);
    }

这个方法会导致image的url没有了域名,编辑的时候会不显示了,这个方法可以直接注释掉
官方源方法是这么写的,而且也不会影响你之前修改的 value()的呀

/**
     * Preview html for file-upload plugin.
     *
     * @return array
     */
    protected function preview()
    {
        $files = $this->value ?: [];

        return array_values(array_map([$this, 'objectUrl'], $files));
    }

也许我看的不对,但是希望作者能看看这块儿

产生的问题就是 编辑已经存在的图片会导致没加域名 显示不出来!
谢谢

4年前 评论

不好用 一直报错 么法用 :see_no_evil:

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!