自定义图片上传

超简单超好用的图片上传

看效果:

二话不说,直接上源码。

HTML:

<form multiple="">
    <div id="Pic_pass">
        <p style="font-size: 20px;font-weight: bold;">请上传详细照片 </p>
        <p><span style="color: red">注:每张照片大写不可超过4M,且最多可以传十张</span></p>
        <div class="picDiv">
            <div class="addImages">
                <input id="files" class="file" multiple="multiple" accept="image/png, image/jpeg, image/gif, image/jpg" type="file">
                <div class="text-detail">
                    <span>+</span>
                    <p>点击上传</p>
                </div>
            </div>
        </div>
    </div>
</form>

CSS:

.imageDiv {display:inline-block;width:160px;height:130px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px dashed darkgray;background:#f8f8f8;position:relative;overflow:hidden;margin:10px}
.cover {position:absolute;z-index:1;top:0;left:0;width:160px;height:130px;background-color:rgba(0,0,0,.3);display:none;line-height:125px;text-align:center;cursor:pointer;}
.cover .delbtn {color:red;font-size:20px}
.imageDiv:hover .cover {display:block;}
.addImages {display:inline-block;width:160px;height:130px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px dashed darkgray;background:#f8f8f8;position:relative;overflow:hidden;margin:10px}
.text-detail {margin-top:40px;text-align:center}
.text-detail span {font-size:40px}
.file {position:absolute;top:0;left:0;width:160px;height:130px;opacity:0}

JS:

var userAgent = navigator.userAgent; //用于判断浏览器类型
$(".file").change(function() {
    // formdata 创建个对象
    var formData = new FormData(document.querySelector("form"));
    $this = $(this);
    //获取选择图片的对象
    var docObj = $(this)[0];
    // console.log(docObj);
    var picDiv = $(this).parents(".picDiv");
    //得到所有的图片文件
    var fileList = docObj.files;
    console.log(fileList);
    //循环遍历
    for (var i = 0; i < fileList.length; i++) {
        //formdata 赋值数据
        formData.append('file'+i,$this[0].files[i]);
        //动态添加html元素
        var picHtml = "<div class='imageDiv' ><img id='img" + fileList[i].name + "' /> <div class='cover'><i class='delbtn'>删除</i></div></div>";
        console.log(picHtml);
        picDiv.prepend(picHtml);
        //获取图片imgi的对象
        var imgObjPreview = document.getElementById("img" + fileList[i].name);
        if (fileList && fileList[i]) {
            //图片属性
            imgObjPreview.style.display = 'block';
            imgObjPreview.style.width = '160px';
            imgObjPreview.style.height = '130px';
            //imgObjPreview.src = docObj.files[0].getAsDataURL();
            //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要以下方式
            if (userAgent.indexOf('MSIE') == -1) {
                //IE以外浏览器
                imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]); //获取上传图片文件的物理路径;
                console.log(imgObjPreview.src);
                // var msgHtml = '<input type="file" id="fileInput" multiple/>';
            } else {
                //IE浏览器
                if (docObj.value.indexOf(",") != -1) {
                    var srcArr = docObj.value.split(",");
                    imgObjPreview.src = srcArr[i];
                } else {
                    imgObjPreview.src = docObj.value;
                }
            }
        }
    }
    // 长传至服务器
    var result = do_upload(formData);

});

// 删除功能
$("div").delegate('.delbtn','click',function() {
    var _this = $(this);
    // 删除服务器图片
    // 略。。。。
    _this.parents(".imageDiv").remove();
});

function do_upload(filedata){
    var url = module + '/server/pic/ajaxUpload';
    $.ajax({
        async: false,
        url: url,
        type: 'POST',
        data: filedata,
        cache: false,
        processData: false,
        contentType: false,
        beforeSend : function(XMLHttpRequest){
            //loading层
            load_index = layer.load(0, {
                shade: [0.2,'#777'] //0.1透明度的白色背景
            }); 
        },
        complete : function(XMLHttpRequest, r){
            layer.close(load_index);
        },
        success : function(res){
            if (res.success === true) {
                // $("form input[name='image_url']").val(res.data);
                layer.msg('已上传');
            } else {
                layer.msg(res.msg);
            }
        },
        error : function(){
            layer.msg('异常,请重新尝试。');
        }
    });
}

function del_img(filepath){
    // 略。。。。
}

 

更新 - 20180831   将删除事件拿出change事件外,否则删除会重复触发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
tinymce 是一款常用的富文本编辑器,它提供了丰富的功能,包括自定义图片上传。以下是关于如何实现 tinymce 自定义图片上传的回答。 要实现 tinymce 自定义图片上传,首先需要了解 tinymce 的配置项。在初始化 tinymce 时,通过设置 `images_upload_url` 参数,可以指定上传图片的 URL 地址。 接下来,在后端服务器上,需要编写一个接口来处理图片上传的逻辑。这个接口的功能主要包括接收上传的图片文件、保存图片到服务器上的指定目录,并返回图片的 URL 地址。 在前端的页面中,可以通过 tinymce 提供的插件来添加一个图片上传的按钮。当用户点击该按钮时,会触发图片上传的逻辑。 实现图片上传的逻辑可以使用 AJAX 技术,通过 XMLHttpRequest 对象将图片文件发送到后端接口。在接收到后端返回的图片 URL 后,可以将图片插入到 tinymce 编辑器中。 同时,在图片上传过程中,还可以添加一些额外的功能来增加用户体验。例如,可以实现图片预览功能,让用户在上传图片之前可以查看图片的预览效果。还可以添加进度条等交互元素,以便用户了解图片上传的进度。 总的来说,实现 tinymce 自定义图片上传需要在后端编写图片上传的接口,并在前端页面中添加图片上传的逻辑。在上传过程中,可以通过 AJAX 技术发送图片文件到后端,并在接收到后端返回的图片 URL 后将其插入到编辑器中。此外,还可以添加一些额外的功能来提升用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值