layui+thinkphp5上传七牛云

小白一个,最近在写上传的功能比较多分享一下,写的不好多多评论,话不多说上代码
七牛的配置信息我全写在config里面了你们可以看代码需要什么去到config里配置
记得要下sdk包
这个是七牛官网的下载地址https://developer.qiniu.com/kodo/sdk/1241/php
引用

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Storage\BucketManager;
    /**
    * 七牛图片上传
    * @return String 图片的完整URL
    */
    public function upload()
    {
        if($this->request->isAjax()){
            $file = request()->file($_FILES);
            // $a=Db::name('qiye')->where('id',$id)->field('id,img')->find();
            $file= $file['file'];
            // dump($file);
            require_once APP_PATH . '/../vendor/qiniu/autoload.php';
            // 需要填写你的 Access Key 和 Secret Key
            $accessKey = config('accessKey');
            $secretKey = config('secretKey');
            // 构建鉴权对象
            $auth = new Auth($accessKey, $secretKey);
            // 要上传的空间
            $bucket = config('bucket');
            $domain = config('DomainImage');
            $url = config('url');
            $token = $auth->uploadToken($bucket);
            // 初始化 UploadManager 对象并进行文件的上传
            $uploadMgr = new UploadManager();
            // 调用 UploadManager 的 putFile 方法进行文件的上传
            list($ret, $err) = $uploadMgr->putFile($token, $file['name'],$file['tmp_name']);
            if ($err !== null) {
                return ["err"=>1,"msg"=>$err,"data"=>""];
            } else {
                //返回图片的完整URL
                return ["code"=>"2","msg"=>"上传完成","data"=>($url .'/'. $file['name']),"url"=>$file['tmp_name']];
            }
        }
    }

这个是页面的上传的按钮

    <!-- 上传图片 -->
    <div style="width: 100%;float: left;" id="uploadlist">
     <label class="layui-form-label">图片</label>
      <div  style="float: left;" >
        <div class="layui-upload-list">
          <p id="demoText"></p>
          <button type="button" class="layui-btn" id="up0">上传图片</button>
        </div>
      </div>

如果需要修改,删除或者展示的话可以看看这个挺好玩的

      <!-- 循环图片 -->
      {notempty name="$enterprise"}
      {foreach $enterprise.img as $k =>$v}
      <div  style="float: left;margin-left:20px" class="deleted{$k}">
        <div class="layui-upload-list">
         <img name="img" class="layui-upload-img" id="demo1" width="150" height="150" src="{$enterprise.shuffling[$k]}">
          <p id="demoText"></p>
          <button type="reset" class="layui-btn but2" lay-submit lay-filter="clear" data_id="{$k}" id="clear">删除图片</button>
        </div>
      </div>
      {/foreach}
      {/notempty}
      </div>

删除的js

    <!-- 删除 -->
    <script type="text/javascript">
        $(document).on("click","#clear",function(e){
          var that = this;
          var id = $(this).attr("data_id");
          console.log(id);
          $(".deleted"+id).remove();

        });
    </script>

图片的上传和提交写的比较乱,看看就行了hhhh,点击上传会返回一个地址,然后循环一段html,删除是定义了一个值,循环一个附一个值,点击删除就移除这个值

    <!-- 图片上传和提交-->
    <input type="hidden" id="ids" value="0">
    <script>
      // var ChouseImage = [{notempty name="$enterprise.img"}];
    layui.use('upload', function(){
      var upload = layui.upload;
      //执行实例
      // var id = document.getElementById("id").value;
      var uploadInst = upload.render({
        elem: '#up0' //绑定元素
        ,url: "{:url('admin/enterprise/upload')}" //上传接口
        // ,data:{id}
        ,multiple:true
        ,done: function(res){
          // ChouseImage.push(res.data)
            // console.log(res)
          if(res.code == 2) {

              var keysss = $("#ids").val();

          let html = 
          `<div  style="float: left;margin-left:20px" class="deleted${keysss}">
            <div class="layui-upload-list">
              <img name="img" class="layui-upload-img" id="demo1" width="150" height="150" src=${res.data} >
              <p id="demoText"></p>
              <button type="reset" class="layui-btn but2" lay-submit lay-filter="clear" data_id="${keysss}" class="class" id="clear">删除图片</button>
            </div>
          </div>`
          keysss++;
          $("#ids").val(keysss);
            $('#uploadlist').append(html);
            $('#upload-thumb').append('<input type="hidden" name="thumb" value="'+ res.id +'">');
          } else {
            layer.msg(res.msg);
          }
        }
        ,success:function(res){
        }
        ,error: function(){
          //请求异常回调
          //演示失败状态,并重传
          var demoText = $('#demoText');
          demoText.html('<span style="color: #FF5722;">上传失败,重新上传</span>');
        }
      });
    });
      layui.use(['layer', 'form'], function() {
          var layer = layui.layer,
              $ = layui.jquery,
              form = layui.form;
          $(window).on('load', function() {
              form.on('submit(admin)', function(data) {
                var ChouseImage = [];
                var El = Array.from($('.layui-upload-list img'))
                El.forEach((el,index)=>{
                // if(index>0){
                ChouseImage.push(el.src)
              // }
             })
                  $.ajax({
                      url:"{:url('admin/enterprise/publish')}",
                      data:{data:$('#admin').serialize(),ChouseImage:ChouseImage.toString()},
                      // data:$('#admin').serialize(),ChouseImage:ChouseImage.toString(),
                      type:'post',
                      async: false,
                      success:function(res) {
                          if(res.code == 1) {
                              layer.alert(res.msg, function(index){
                                location.href = res.url;
                              })
                          } else {
                              layer.msg(res.msg);
                          }
                      }
                  })
                  return false;
              });
          });

      });

    </script>

二更新
发现这个删除有bug,然后换过了一种方式,就是计算删除的按键数

 var keysss = $("#ids").val();
 换成这句话
var keysss = $("button[type=reset1]").length;

增加一个js 计算按键

    <script type="text/javascript">
      console.log("HERE");
      let num = $("button[type=reset1]").length;
      console.log(num)
    </script>

总结
1.挑着看就好了
2.下载sdk包
3.配置七牛信息
4.前段获取图片地址,传后套
5.接收然后上传就好了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值