tp5 (图片)多图上传并生成可访问的链接

51 篇文章 2 订阅

声明常量,用来装网址名字,这样我们就不用每次去手动输入了,我在入口文件中声明的。

defined('__UPLOADURL__')   or define('__UPLOADURL__',  'http://tp5-expert.likeball.top');

 

html代码

<form action = "{:url('admin/Indexhome/carousel')}" method = 'post' enctype = 'multipart/form-data'>
<input type = 'file' name = 'file[]' multiple = 'multiple' id = '' value = '' />
<input type = 'text' name = 'former' value = '这里需要后台传过来值' />
<input class = 'layui-btn' type = 'submit' value = '提交' />
</form>

 

控制器(注意前端input框的name值要加[]数组的格式)

<?php
namespace app\admin\controller;
header( 'Content-Type:text/html;charset=utf-8' );
use think\Controller;
use think\Request;
use think\Loader;
class Indexhome extends Controller {
    //轮播
    public function carousel() {
        if ( $_FILES['file']['name'] == '' ) {
            //如果报错那么使用['goods_carousel']['name'][0]这个来判断是否为空
            //如果没有上传文件那么上传默认的图片
            $arr = input( 'former' );//接收默认图片
        } else {
            $file = request()->file( 'file' );
            foreach ( $file as $item ) {
                //移动到框架应用根目录/uploads/目录下
                $info = $item->move( ROOT_PATH . 'public' . DS . 'static/uploads' );
                if ( $info ) {
                    $saveName = str_replace( '\\', '/', $info->getSaveName() );
                    $img = '/static/uploads/' . $saveName;
                } else {
                    echo '文件上传失败' . '<br/>';
                }
                $data[] = explode( ',', $img );
            }
            $arr = '';
            foreach ( $data as $k => $v ) {
                $arr .= __UPLOADURL__.$v[0].',';
                //$ggtop[$k]['photo'] = __UPLOADURL__.$v['photo'];
            }
            //dump( $arr );
            // exit;
            $fin['picture'] = $arr;
            $fin['time'] = date( 'Y-m-d h:i:s', time() );
            $end = db( 'carousel' )->where( 'id', 1 )->update( $fin );
            if ( $end ) {
                $this->success( '增加成功' );
            } else {
                $this->error( '增加失败' );
            }
        }
    }
}

 

 

控制器处理刚插入的图片路径,方便前端用ajax请求;

代码:

    public function picture(){
    	$carousel = db('carousel')->where('id', 1)->find();
    	 // 消除字段最右边的符号
    	$picture = rtrim($carousel['picture'],",");
        //将字符串转为数字已逗号","分割
    	$explode = explode("," , $picture);
        //返回json数据类型,方便前端使用
    	return json($explode);
    }

 

用mui请求刚才上传的图片,生成轮播图

前端ajax页面请求读取,我用的是mui的框架所以,下载一个引入一下就可以了,地址 https://github.com/dcloudio/mui 

文档说的不是很好,放在根目录,我的是放在根目录如果不是自己在前面拼文件夹名字

 <link rel="stylesheet" href="mui-master/dist/css/mui.min.css" />

<script src="mui-master/dist/js/mui.min.js" type="text/javascript" charset="utf-8"></script>

js放在下面不知道的同学注意了(这个js放在最上面和css放在一起)。

<!--轮播开始-->
        <div class="lunbo">
            <div class="mui-slider">
                <div class="mui-slider-group mui-slider-loop">

                </div>
                <div class="mui-slider-indicator">

                </div>
            </div>
        </div>
        <!--轮播结束-->


<script type="text/javascript">
    $(function() {
        $.ajax({
            type: 'POST',
            url: "http://tp5-expert.likeball.top/api/Indexhome/picture",
            dataType: 'json',
            success: function(data) {
                console.log(data);
                $('.mui-slider-group').empty();
                $('.mui-slider-indicator').empty();
                var length = data.length;
                if(length == 1) {
                    console.log(data[0]);
                    $('.mui-slider-group').append('<div class="mui-slider-item"><img class="lunbo-img" src="' + data[0] + '" /></div>');
                } else {
                    $('.mui-slider-group').append('<div class="mui-slider-item mui-slider-item-duplicate"><img class="lunbo-img" src="' + data[length - 1] + '" /></div>');
                    $('.mui-slider-indicator').append('<div class="mui-indicator mui-active"></div>');
                    for(var i = 0; i < length; i++) {
                        $('.mui-slider-group').append('<div class="mui-slider-item"><img class="lunbo-img" src="' + data[i] + '" /></div>');
                    }
                    $('.mui-slider-group').append('<div class="mui-slider-item mui-slider-item-duplicate"><img class="lunbo-img" src="' + data[0] + '" /></div>');
                    for(var i = 0; i < length - 1; i++) {
                        $('.mui-slider-indicator').append('<div class="mui-indicator"></div>');
                    }
                }
                var gallery = mui('.mui-slider');
                gallery.slider({
                    interval: 1000 //自动轮播周期,若为0则不自动播放,默认为0;
                });
            },
            error: function(error) {
                console.log('error');
            }
        });
    })
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值