zoukankan      html  css  js  c++  java
  • js实现图片上传到服务器和回显

    关于js实现图片的上传和回显,曾经用户的代码粘在这里:

    样式:这样写样式的道理是给<input>标签的父级设置一个背景图,就是‘+’那个背景图,然后把<input>的宽高设置得跟父级一样,且完全透明(注意是透明不是隐藏),这样点击的时候看似是点击的‘+’的节点,其实点击的是<input>节点。

        .file-box {
                    position: relative;
                    display: inline-block;
                    width:100px;
                    height:100px;
                    background:url('images/uploadPc.png')no-repeat;
                    background-size:100px 100px;
                }
                #input_file{
                    width:100%;
                    height:100%;
                    opacity: 0;
                    filter:alpha(opacity=0);
                }

    input标签:

    <div class="file-box">
               <input type="file" value="" name="file" id = "input_file"
                  accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" onchange="imgPreview(this,0)" >
        </div>
    

    实现imgPreview()方法: 这个方法是给$("#input_file")这个对象设置图片的值并回显图片

      

     function imgPreview(fileDom,i) {
                //判断是否支持FileReader
                if(window.FileReader) {
                    var reader = new FileReader();
                } else {
                    alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
                }
                //获取文件
                var file = fileDom.files[0];
                var imageType = /^image//;
                //是否是图片
                if(!imageType.test(file.type)) {
                    alert("请选择图片!");
                    return;
                }
                //读取完成
                reader.onload = function(e) {
                    //图片路径设置为读取的图片
                    // img.src = e.target.result;
                    console.log(document.getElementsByClassName('file-box'));
                    document.getElementsByClassName('file-box')[i].style.background = "url("+e.target.result+")no-repeat";//回显图片
                    document.getElementsByClassName('file-box')[i].style.backgroundSize = '200px 160px';
                    console.log('reader',reader)
                };
                reader.readAsDataURL(file);
            }
    

    上传部分的代码:

       var formData = new FormData();
        formData.append('photo', $('#input_file')[0].files[0]);
        //ajax请求
        $.ajax({
                    type: "post",
                    url:  "接口地址",
                    data: formdata,
                    dataType: 'json',
                    processData: false, // 告诉jQuery不要去处理发送的数据
                    contentType: false, // 告诉jQuery不要去设置Content-Type请求头
                    xhrFields:{withCredentials:true},
                    async: true,    //默认是true:异步,false:同步。
                    success: function (data) {
                        callback(data);
                    },
                    error: function (data) {
                        layer.msg('请求异常');
                    },
                });
    


    最终实现效果:


    原文:https://blog.csdn.net/lijia_1983370657/article/details/80489979

  • 相关阅读:
    3.struts2接收页面传参的三种方式
    2.struts2访问web资源(在struts2中获取session,request等等)
    1.struts2原理和入门程序
    3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)
    2.springMVC+spring+Mybatis整合
    1.springMVC+spring+Mybatis的整合思路
    clipboard
    SDN&NFV
    linux命令速查
    todo
  • 原文地址:https://www.cnblogs.com/lxwphp/p/10887917.html
Copyright © 2011-2022 走看看