Fastadmin table 列表页图片预览处理

 

方法一 : 把下面的代码插入

// 为表格绑定事件
Table.api.bindevent(table);

的上面即可

table.on('post-body.bs.table', function (e, settings, json, xhr) {
            $(".btn-editone", this)
                .off("click")
                .removeClass("btn-editone")
                .addClass("btn-addtabs")
                .prop("title", __('Edit'));

            // 预览图弹出处理
            $('img').parent('a').attr('href','javascript:;');//去掉图片oss连接地址
            $('img').bind('click',function(){
                var imgs = $(this).parents('td').find('a img');
                var dataJson = [],item={};
                for (var i = 0; i < imgs.length; i++) {
                    item['alt'] = '';
                    item['pid'] = Math.random()*10;
                    item['src'] = item['thumb'] = $(imgs[i]).attr('src');
                    dataJson.push(item);
                    item = {}; // 重置
                }
                var json =  {
                  "title": "", //相册标题
                  "id": 123, //相册id
                  "start": 0, //初始显示的图片序号,默认0
                  "data": dataJson
                };
                Layer.photos({
                    photos: json,
                    anim: 0 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
                }); 
            })
        });

 

方法二 : 把backend-init.js的代码替换成下面的代码

define(['backend', 'table'], function (Backend, Table) {

    /*! 注册 data-tips-image 事件行为 */
    $('body').on('click', '[data-tips-image]', function () {
        var img = new Image();
        var imgWidth = this.getAttribute('data-width') || '480px';
        img.onload = function () {
            var $content = $(img).appendTo('body').css({background: '#fff', width: imgWidth, height: 'auto'});
            Layer.open({
                type: 1, area: imgWidth, title: false, closeBtn: 1,
                skin: 'layui-layer-nobg', shadeClose: true, content: $content,
                end: function () {
                    $(img).remove();
                },
                success: function () {

                }
            });
        };
        img.onerror = function (e) {

        };
        img.src = this.getAttribute('data-tips-image') || this.src;
    });

    Table.api.formatter.image =  function(value){
        return "<a href='javascript:void(0)' data-tips-image='"+value+"'><img src='"+value+"' class='img-sm img-center' ></a>";
    };
});

 

这样直接在页面的img标签中添加 data-tips-image,点击时自动弹出图片预览

<img src="{$goods.image}" data-tips-image width="50" height="50" alt="">

改js中的table也是一样的,我们只需要更改formatter就可以了,示例如下:

formatter: Table.api.formatter.image

替换成:

formatter: function(value){
                 return "<a href='javascript:void(0)' data-tips-image='"+value+"'><img src='"+value+"' class='img-sm img-center' ></a>";
           }

图片组代码:

    Table.api.formatter.images =  function(value){
        var arr = value.split(',');
        var html = [];
        $.each(arr, function (i, value) {
            value = value ? value : '/assets/img/blank.gif';
            html.push('<a href="javascript:void(0)" data-tips-image="'+value+'"><img class="img-sm img-center" src="' + value + '" /></a>');
        });
        return html.join(' ');
    };
### FastAdmin 中实现表格多图片上传的方法 在 FastAdmin 框架内实现表格的多图片上传功能涉及前端和后端两部分的工作。对于前端而言,主要是在页面上提供一个多文件选择器,并确保所选文件能够被正确提交给服务器;而后端则负责接收这些文件并保存至指定位置。 #### 前端配置 为了支持多张图片的选择与预览,在 `add.html` 或者编辑页面对应的模板文件中修改输入框定义如下: ```html <div class="form-group"> <label for="c-images">Images</label> <input id="c-images" multiple accept="image/*" type="file" name="images[]" class="form-control-file"/> </div> ``` 这段代码创建了一个允许用户选取多个图像文件(`multiple`)以及仅限于接受图像类型的文件选择对话框(`accept="image/*"`)[^1]。 接着为了让上传过程更加友好直观,可以利用一些插件来增强用户体验,比如使用 [Layui](https://www.layui.com/) 提供的 upload 组件或者其他类似的 JavaScript 插件来进行更复杂的交互设计,如即时预览等功能。 #### 后端处理逻辑 当接收到客户端发送过来的数据包时(通常是以表单形式),需要解析其中包含的所有文件信息,并依次对其进行存储操作。假设正在使用的控制器名为 `ImageController.php` ,那么可以在该类中的适当方法里加入下面所示的核心逻辑片段: ```php public function upload() { $files = request()->file('images'); foreach ($files as $file) { // 验证文件合法性... try { $savename = \think\facade\Filesystem::disk('local')->putFile('uploads', $file); // 将$savename存入数据库或其他持久化介质 } catch (\Exception $e) { // 错误日志记录... return json(['code'=>0,'msg'=>'Upload failed']); } } return json(['code'=>1,'msg'=>'Success']); } ``` 上述 PHP 代码展示了如何遍历来自请求体内的每一个文件项,并尝试将其安全地放置在一个预先设定好的目录下 (`'uploads'`) 。成功之后还可以进一步将路径名 `$savename` 记录下来以便后续访问或管理。 最后需要注意的是,由于涉及到文件系统的读写权限等问题,在实际部署前应当仔细检查相关设置以防止潜在的安全风险。 #### Bootstrap Table 整合 考虑到题目提到要结合 `Bootstrap-table` 使用此特性,则还需要调整数据展示方式使得每条记录下的图片链接能正常呈现出来。这可以通过自定义列渲染函数完成,具体做法可参见官方文档关于 formatter 属性的相关说明。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

withoutfear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值