带预览的图片上传(相当于手写的)

Posted

tags:

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

一.html

<form id="subheadphoto" action="{:U(‘user/center/avatar‘)}" method="post" enctype="multipart/form-data">
        <div class="pb_left fl user_pic">
          <img src="{:sp_get_user_avatar_url($user[‘avatar‘])}"  onclick="$(‘#change_pic‘).click()" width="112" height="112" />
        </div>
        <input type="file" name="headphoto" id="change_pic" style="display: none;" onchange="getPhoto(this)"/>
</form>

 

 

二.js

<script type="text/javascript">
     //头像上传
        var imgurl = "";
         function getPhoto(node) {
        try{
            var file = null;
            if(node.files && node.files[0] ){
                file = node.files[0];
            }else if(node.files && node.files.item(0)) {
                file = node.files.item(0);
            }
            //Firefox 因安全性问题已无法直接通过input[file].value 获取完整的文件路径
            try{
                imgURL =  file.getAsDataURL();
            }catch(e){
                imgRUL = window.URL.createObjectURL(file);
            }
        }catch(e){
            if (node.files && node.files[0]) {
                var reader = new FileReader();
                reader.onload = function (e) {
                    imgURL = e.target.result;
                };
                reader.readAsDataURL(node.files[0]);
            }
        }
        creatImg(imgRUL);
        return imgURL;
    }

    function creatImg(imgRUL){
        var textHtml = "<img  src=‘"+imgRUL+"‘width=‘112‘ height=‘112‘/>";
        $(".user_pic").html(textHtml);
    }

    $(function(){
          $("#change_pic").change(function(){
            $("#subheadphoto").submit();
          });
    })
</script>

三.php(此处用为thinkphp的方法为例)

// 用户头像编辑
    public function avatar(){
    $uid=$this->userid;
        $upload = new \Think\Upload();
        $upload->maxSize   =     3145728 ;// 设置附件上传大小
        $upload->exts      =     array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘);// 设置附件上传类型
        $upload->rootPath  =      ‘data/Upload/avatar/‘; // 设置附件上传根目录
        // 上传单个文件 
        $info   =   $upload->uploadOne($_FILES[‘headphoto‘]);//文件获取方式
        if(!$info) {// 上传错误提示错误信息
            $this->error($upload->getError());
        }else{// 上传成功 获取上传文件信息
            $avatar_path=$info[‘savepath‘].$info[‘savename‘];
            $data[‘avatar‘]=$avatar_path;
            if($this->users_model->where("id=‘$uid‘")->save($data)!==false){
            $this->redirect(‘center/safe‘);
            }
        }
    }

 

以上是关于带预览的图片上传(相当于手写的)的主要内容,如果未能解决你的问题,请参考以下文章

求js多张图片上传,可预览右上角带删除图标的代码

带删除和预览的多张图片上传 Laravel

求PHP多图片上传带预览的插件,有demo最好,

上传多张图片预览

php头像上传预览

LayUI上传图片