评论:H5文件上传插件easyUpload.js  [查看原文]

所属分类:输入-上传

 152863  558  236
当前第1页 / 共9页
    William0
    2022/11/18 14:33:47

    我用了之后,在后台一直取不到files,这个是什么原因呢。

    easyUpload({
        easyId: 'easy1',
        action: 'easyuploadHandler.ashx',
        type: 'post',
        accept: '.jpg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar,.mp3,.mp4,.wma,.avi,.txt',
        maxSize: 20, //最大20M
        maxCount: 1, //插件单次添加文件的最大数量,Number类型    
        multiple: false,
        ? //是否开启多文件上传,Boolean类型
        name : 'file', //上传的文件字段名
        dataFormat: 'formData',
        setRequestHeader: function(xhr) {
            xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
            //xhr.setRequestHeader('content-type', 'multipart/form-data');
    
        },
        beforeUpload: function(file, data, args) {
            data.append('token', file.id); //上传方式为formData时
        },
        buildSendData: function(file) {
            var formData = new FormData(); // 发送格式为formData时
            console.log(file.file.name);
            formData.append('name', file.file);
            //formData.set('name', file.file);
            formData.append('filename', file.file.name);
            console.log(formData.get('name'));
            //console.log(formData);
            return formData;
    
            // return file.base64; //发送格式为base64时
    
            //return null; //发送空数据,用于测试
        },
        checkSuccessCode: function(xhr) {
            console.log(xhr);
            if (/error/.test(xhr.responseText.toLowerCase())) { //这里判断仅仅用于测试,具体看项目
                return false;
            } else {
                return true;
            }
        }
    });
    回复
    0
    2022/1/7 9:19:23
    大佬为什么上传成功后进度条不变化?看代码data.loaded/data.tota,但返回的loaded是一百多,tota是0 回复
    插件客服-小鸟0
    2021/6/28 16:38:56
    不支持IE有点遗憾
        八颗牙0
        2022/1/7 15:15:54
        是的哦,又要重新找一个
    回复
    doddd0
    2021/6/1 21:55:05
    新版本按照参数修改,无法上传文件💔
        funnyque0
        2021/6/2 6:41:07
        不存在的,好好看配置文档哦
    回复
    funnyque0
    2021/6/1 10:07:11
    easyUpload 截止今日已升级至V3.0.1
    1.重构后版本以原生js编写,不再依赖其他类库
    2.代码解耦精简,压缩后仅8kb左右
    3.新增messageBox提示、loading动画等交互性展示
    4.参数配置更灵活和符合习惯,某些封装方法api保持和原生api一致
    5.减少dom操作,提升性能,分离css支持定制样式等
    6.其他...最新版本可访问:https://github.com/funnyque/easyUpload.js
        William0
        2022/10/17 9:10:40
        你好,我现在点了上传按钮后,在C#后台获取不到上传的文件,这个是怎么回事呢?
    回复
    1
    2021/5/14 17:53:39
    beforeUpload: function(file, data, args) {
        data.append('token', file.id); //上传方式为formData时
    },

    执行上传前的回调函数的时候如果file ,data 没有初始化且方法最开始执行会报错,每个人的引用方式不一样,因为我用到了file,直接把data 初始化 file初始化可以避免这种小错误。

    回复
    ?爺敢哭 敢笑 ■纯汉纸‘0
    2020/11/26 9:58:29
    能默认单选按钮直接选中?还得点击选中再上传 回复
    ╁? Pretty、0
    2020/7/30 18:13:44
    潘付增0
    2020/6/18 16:14:14
    ¨JustiCe0
    2020/5/27 15:09:36
    明明成功了却提示失败???是为啥? 回复
    开发部江腾0
    2020/5/8 10:15:01
    如何设置可以支持上传word、excel文件
        BattleofLexington1
        2020/5/27 16:18:51
        allowFileTypes: '*.jpg;*.doc;*.pdf',//允许上传文件类型,格式';*.doc;*.pdf'
        上面自己加。
    回复
    半醒狐狸1
    2020/4/28 15:36:52

    有个问题,删除回调不管用,这问题可以在源码中修改,在源码中搜索'$(".btn--file")'和'$(".btn--item")'的两个事件,这俩分别是顶部多选的删除文件按钮,和每列中右上角的'X'按钮。然后在各自的事件中添加'that.configs.onRemove && that.configs.onRemove(delFiles);'即可。例如:
    easyUploader.js 195行:

    $(".btn--file").off("click").on("click", function() {
        var hasLoading = false;
        that.files.forEach(function(item) {
            if (item.checked && item.uploadStatus == 'loading') {
                hasLoading = true;
            }
        });
        if (hasLoading) {
            var message = '正在上传,请稍后操作';
            if (that.configs.showAlert) {
                alert(message);
            }
            that.configs.onAlert && that.configs.onAlert(message);
        } else {
            var newFiles = [];
            var delFiles = [] //新建一个删除文件的数组,
            that.ajax.isReady = false;
            that.files.forEach(function(item) {
                if (item.checked) { //判断当文件列表右侧多选为选中时,将该文件信息添加到删除数组中。
                    delFiles.push(item)
                } else {
                    newFiles.push(item);
                } //这里是源文件的方法,将没有选中删除的文件放在这里。
    
            });
            that.files = newFiles;
            that.updateFilesDom();
            that.ajax.isReady = true;
            that.configs.onRemove && that.configs.onRemove(delFiles); //执行删除回调
        }
    });
        wee0
        2021/4/3 9:50:56
        that.configs.onRemove && that.configs.onRemove(delFiles); //执行删除回调
        这句话加上,在delFiles部分出错,应该是新版本问题,这个删除回调很重要啊,没有删除回调,提交的时候就乱套了,作者完善一下啊
    回复
    三十一七十二0
    2020/3/27 13:24:07
     assignObject: function(target, source1, source2) {
         target = source1; /* 简单复制地址,严谨来说应该是做深度拷贝处理 */
         Object.keys(source2).forEach(function(key) {
             if (target[key] != undefined) {
                 target[key] = source2[key];
             }
         });
         return target;
     },

    这个地方  

     if (target[key] != undefined) {
         target[key] = source2[key];
     }

    在赋值的时候 把事件给搞掉了!

        三十一七十二0
        2020/3/27 13:24:53
        if (source2[key] != undefined)
        {
            target[key] = source2[key]; 
        }

        不知道这样改正不正确

    回复
    檫?吣?0
    2019/12/20 17:28:06
    删除回调使用不了
        半醒狐狸0
        2020/4/28 15:43:37
        还在用这个插件的话看看最新评论,我找到在哪改删除回调的方法了
    回复
    丶一夕3
    2019/11/29 13:55:17

    两个地方建议改下:

    1.上传大文件会崩。

    convertToBase: function(file) {
        //            var reader,
        //                isImg = this.checkImg(file);
        //            if (typeof FileReader !== 'undefined') {
        //                reader = new FileReader();
        //            } else {
        //                if (window.FileReader) reader = new window.FileReader();
        //            }
    
        //            reader.onload = (e) => {
        //                var base = e.target.result;
        //                if (isImg) {
        //                    this.compressImg(base, file);
        //                } else {
        //                    this.formatFile(file, iconFile, base);
        //                }
        //            }
        //            reader.readAsDataURL(file);
    
        var base = "";
        this.formatFile(file, iconFile, base);
    },

    convertToBase这个方法修改,去掉了加载文件的操作,全程好像也不需要用到,注释掉的为原来的代码。当然,图片不大要预览可以转一下。
    2. 随着文件选择次数增加,每次添加文件会重复。
    找了老半天,终于找到了问题所在。

    $(".btn-select-file").off("click").on("click", function() {
        that.node.list = $(this).parent().siblings(".list");
        console.info("chufa");
        $(this).parent().children(".input-file").trigger("click").on("change", function(e) {
            that.fileObj = {
                fileList: e.target.files,
                isReady: true
            };
            that.node.input = $(this);
            console.info("doUpdateFiles")
            that.updateFiles();
            that.configs.onChange && that.configs.onChange(e.target.files);
    
            $(this).parent().children(".input-file").unbind("change");
        });
    });

    这个文件选择点击事件中,在方法中加入

    $(this).parent().children(".input-file").unbind("change");

    否则在每次点击选择文件都会触发上次的onchange,所以文件重复添加了

        @%@1
        2020/3/6 16:37:07
        加了$(this).parent().children(".input-file").unbind("change");,还是可以重复上传呢
        乔小卓0
        2020/3/12 18:27:31
        所以这个重复上传是怎么解决的
        乔小卓0
        2020/3/12 18:31:09
        已解决
    回复

讨论这个项目(236)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

取消回复