zoukankan      html  css  js  c++  java
  • TP6框架中如何无刷新上传文件

    我这个图片上传使用的  layui自带的文件上传插件

    上传前效果图:

    上传后效果图:

     效果还是蛮漂亮的对吧。。

    直接上代码不啰嗦:

    HTML代码:

     1   <div class="layui-form-item">
     2                       <label class="layui-form-label">
     3                         文章封面
     4                     </label>
     5                     <button type="button" class="layui-btn" id="news_img_button" >上传图片</button>
     6                     <input type="hidden" value="" id="news_pic" name="news_pic" required="" lay-verify="news_img" autocomplete="off" class="layui-input">
     7                     <div class="layui-upload-list">
     8                         <label class="layui-form-label">
     9                         </label>
    10                         <img class="layui-upload-img" id="newsimg" style=" 200px;height: 140px;margin: 0 10px 10px 0;" src="" onerror="this.src='/admin/images/no_img.png'">
    11                         <p id="newsimg_text"></p>
    12                     </div>
    13                   </div>

    JS代码

     1  <script>
     2             layui.use('upload', function(){
     3                 var $ = layui.jquery
     4                         ,upload = layui.upload;
     5 
     6                 //普通图片上传
     7                 var uploadInst = upload.render({
     8                     elem: '#news_img_button'
     9                     ,url: '/admin/news/uploadImg'
    10                     ,before: function(obj){
    11                         //预读本地文件示例,不支持ie8
    12                         obj.preview(function(index, file, result)
    13                         {
    14                             $('#newsimg').attr('src', result); //图片链接(base64)
    15                         });
    16                     }
    17                     ,done: function(res){
    18 
    19                         //如果上传失败
    20                         if(res.status == 'SUCCESS')
    21                         {
    22                             $("#news_pic").attr('value',res.filename)
    23                         }
    24                         if(res.status== 'FAIL')
    25                         {   
    26                             //$("#newsimg_text").html(res.msg);
    27                             layer.msg(res.msg);
    28                         }
    29                         //上传成功
    30                     }
    31 
    32                 });
    33             });
    34         </script>

    控制器代码:

     1 //控制器代码
     2    public function uploadImg()
     3     {
     4         // 获取表单上传文件 例如上传了001.jpg
     5         $file = request()->file('file');
     6         $fiels = request()->file();
     7         // 上传到本地服务器
     8          try {
     9             validate(['image'=>'fileSize:5120|fileExt:jpg,png,gif,jpeg,bmp|fileMime:image/jpeg,image/gif,image/png,image/bmp'])->check($fiels);
    10 
    11             $savename = \think\facade\Filesystem::disk('public')->putFile( 'news', $file);
    12 
    13             return json(array('status'=>'SUCCESS','msg'=>"上传成功",'filename'=>"/uploads/".$savename));
    14 
    15         } catch (\think\exception\ValidateException $e) {
    16 
    17             return json(array('status'=>'FAIL','msg'=>"上传失败".$e->getMessage()));
    18         }
    19     }     

  • 相关阅读:
    OpenCV 入门示例之三:AVI 视频播放控制
    CSS3 图标神器 => content:"我是特殊符号"
    【angular5项目积累总结】优秀组件以及应用实例
    基于angular2+ 的 http服务封装
    【angular5项目积累总结】遇到的一些问题以及解决办法
    【angular5项目积累总结】panel组件
    【angular5项目积累总结】http请求服务封装
    【angular5项目积累总结】消息订阅服务
    【angular5项目积累总结】表单复杂校验
    【angular5项目积累总结】列表多选样式框(2)
  • 原文地址:https://www.cnblogs.com/ypeih/p/15470253.html
Copyright © 2011-2022 走看看