thinkphp的同步上传图片和异步上传图片

Posted cl94

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp的同步上传图片和异步上传图片相关的知识,希望对你有一定的参考价值。

同步:

前台页面:

        <div class="form-div"> 
            <form action="{:url(‘index/i/edit_head_img_cl‘)}" enctype="multipart/form-data" method="post">
                <input type="file" name="image" accept="image/gif, image/jpg ,image/png"/> <br> 
                <p style="color:red">仅支持不大于5m,后缀为jpg,png,gif的图片</p>
                <input type="submit" value="上传" /> 
            </form> 
        </div>

 

后台页面:

    //处理头像修改
    public function edit_head_img_cl(){

      //检验用户是否登陆,并获取user_id
      if($this->check_log[ok] == -1){
        $this->error($this->check_log[error]);
      }
      $user_id = $this->check_log[id];
      echo 1;
      // 获取表单上传文件 例如上传了001.jpg
      $file = request()->file(image);
      echo 2;
      // 移动到框架应用根目录/public/uploads/ 目录下
      if($file){
          $info = $file->validate([size=>5242880,ext=>jpg,png,gif])->move(static/uploads/);
          if($info){
              // 成功上传后 获取上传信息
              // 输出 jpg
/*              echo $info->getExtension();
              // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
              echo $info->getSaveName();
              // 输出 42a79759f284b767dfcb2a0197904287.jpg
              echo $info->getFilename(); */
              $ing_url = $info->getSaveName();
              //把url写进头像
              $res = UserDB::update([id=>$user_id,head_img=>$ing_url]);
              if(!$res){
                echo 系统故障,更换头像失败;
              }else{
                echo <script type="text/javascript">parent.location.reload();</script>;
              }


          }else{
              // 上传失败获取错误信息
              echo $file->getError();
          }
      }else{
        echo request()->post(image);
      }
    }

 

 

 

 

 

 

 

 

 

异步

前台页面:

                            <tr>
                                <td>头像(异步上传):</td>
                                <td>
                                    {if $user.head_img == ‘‘}
                                        <img src="__STATIC__/uploads/{$site_setup.default_img}" style="width: 50px;height: 50px;" class="head-img">
                                    {else/}
                                        <img src="__STATIC__/uploads/{$user.head_img}" style="width: 50px;height: 50px;" class="head-img">
                                    {/if}
                                </td>
                                <td>
                                    <input type="file" multiple="multiple" id="inputfile" name="" class="photo">

                                    
                                </td>
                            </tr>
    //图片异步上传
    $("#inputfile").change(function(){
        console.log($(this).val());
        /*alert(1);*/
        var file = $(#inputfile)[0].files[0];
        var data = new FormData();
    /*    console.log($(‘#inputfile‘));*/
        data.append(image, file);

         $.ajax({
            url:"{:url(‘index/i/edit_head_img_cl_yb‘)}", /*去过那个php文件*/
            type:POST,  /*提交方式*/
            data:data,
            dataType: "json",
            cache: false,
            contentType: false,        /*不可缺*/
            processData: false,         /*不可缺*/
            mimeType: "multipart/form-data",
            success:function(data){  
                if(data.ok == 1){
                    //把头像换成新的
                    $(".head-img").attr("src","__STATIC__/uploads/"+data.url);
                }      
                alert(data.message);
            },
            error:function(data){
                alert(上传出错);
            }
        });    
    });

 

后台页面:

    //处理头像修改(异步)
    public function edit_head_img_cl_yb(){

      //检验用户是否登陆,并获取user_id
      if($this->check_log[ok] == -1){
        return [ok=>-1,message=>$this->check_log[error]];
      }
      $user_id = $this->check_log[id];

      // 获取表单上传文件 例如上传了001.jpg
      $file = request()->file(image);

      // 移动到框架应用根目录/public/uploads/ 目录下
      if($file){
          $info = $file->validate([size=>5242880,ext=>jpg,png,gif])->move(static/uploads/);
          if($info){
              // 成功上传后 获取上传信息
              // 输出 jpg
/*              echo $info->getExtension();
              // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
              echo $info->getSaveName();
              // 输出 42a79759f284b767dfcb2a0197904287.jpg
              echo $info->getFilename(); */
              $ing_url = $info->getSaveName();
              //把url写进头像
              $res = UserDB::update([id=>$user_id,head_img=>$ing_url]);
              if(!$res){
                return [ok=>-1,message=>系统故障,更换头像失败];

              }else{
                 return [ok=>1,message=>上传成功!,url=>$ing_url];
              }


          }else{
              // 上传失败获取错误信息
              return [ok=>-1,message=>$file->getError()];
          }
      }else{
        return [ok=>-1,message=>没有接收到图片!];
      }
    }

 

以上是关于thinkphp的同步上传图片和异步上传图片的主要内容,如果未能解决你的问题,请参考以下文章

求一段JS或Jquery异步上传图片的代码

thinkPHP利用ajax异步上传图片并显示删除

thinkphp如何将多张上传的图片根据状态分别存储!

如何在 alamofire 中同步上传图片?

关于thinkphp图片上传问题

OkHttpOkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 )