LayUI upload 控件上传提示 404 找不到后台请求方法。

3 篇文章 0 订阅
2 篇文章 0 订阅

1.本次上传文件Excel批量导入文件。

上传页面layui写法,弹框页面如图。

<li class="layui-timeline-item">
    <i class="layui-icon layui-timeline-axis"></i>
    <div class="layui-timeline-content layui-text">
        <h3 class="layui-timeline-title">3、选择并上传</h3>
        <p>根据下载/导出的模板,编辑人员信息</p><br/>
        <div class="layui-upload">
            <button type="button" class="layui-btn layui-btn-sm layui-btn-normal" id="test10">选择人员</button>
            <button type="button"  class="layui-btn layui-btn-sm" id="test100">开始上传</button>
        </div>
    </div>
</li>

2.接下来完成js方法。

top.$("#addAndEdit_class #exp_people_btn").off("click");
top.$("#addAndEdit_class #exp_people_btn").on("click", function () {		
    var expUserWindow = top.layer.open({
        type: 1,
        title: '导入人员',
        maxmin: true,
        area: ['750px', '400px'],
        content: $("#addAll2").html(),
        btn: ['确定', '取消'],
        yes: function () { // 确定按钮点击事件
            top.layer.close(expUserWindow);
            $("#addAll2").hide();							
            return false;
        },
        cancel: function () { // 右上角关闭回调
            top.layer.close(expUserWindow);
            $("#addAll2").hide();
        },
        btn2: function () {
            top.layer.close(expUserWindow);
            $("#addAll2").hide();
        },
        success: function (layero, index) { // 弹框弹出成功后的回调
            window.parent.reRenderForm();
            top.layui.use('upload', function(){
            var $ = top.layui.jquery,upload = top.layui.upload;  

                //选完文件后不自动上传 
                        upload.render({
                        elem: '#test10'
                        ,url: "${pageContext.request.contextPath}/customer/importCustomers"
                        ,accept: 'file' //普通文件
                        ,auto: false
                        ,field:'filess'
                        ,exts: 'xls' 
                        ,bindAction: '#test100' 
                        ,done: function(res){
                            console.log(res)
                            openPopup(res);
                        }
                        ,before: function(){
                            var index = top.layer.load(0, {shade: false}); //0代表加载的风格,支持0-2
                            //loading层
                            index = top.layer.load(1, {
                                shade: [0.5,'#ccc'],//0.1透明度的白色背景
                            });
                            setTimeout(function () {
                                top.layer.close(index)
                            }, 2000)
                        }
                    });
                
                });					
            }
    });
})

3.完成java后台请求接口。
注意因为upload控件返回必须是json数据所以要加上    @ResponseBody  注解

/**
* Customers Excle 批量导入
* @param file
* @return
* @throws Exception
*/
@RequestMapping(value="/importCustomers",method = {RequestMethod.POST})
@ResponseBody
public Map<String,Object> importEmpls(@RequestParam(value = "filess", required = true) MultipartFile[] file) throws Exception{
    PageData pageData = getPageData();
    pageData.put("filess",file);
    pageData.put("createId", getCreateID());
    pageData.put("createTime", getCreateTime());
    Map<String,Object> map= kpxCustomerService.importCustomers(pageData);
    logger.debug(map.toString());
    return map;
}

4.如果不加上注解,实际上后台已经接受到请求,而浏览器则是报错404找不到。

5.加上注解之后则是正常的,点击上传显示正在上传,到最后的完成上传。

### 回答1: 在使用layuiupload组件进行文件上传的过程中,出现了第二次上传不触发上传的问题。这个问题的出现可能是由于多种原因引起的。 其中较为常见的原因之一是由于前一次上传文件被缓存,当您尝试重新上传同一个文件时,因为在浏览器的缓存中已经存在该文件,所以上传操作不会被触发。为了解决这个问题,您可以尝试在上传文件时给文件名加上一个时间戳或随机数,这样就可以保证每次上传的文件名称都是唯一的,避免缓存的问题。 另外一个可能原因是您在代码中没有正确地处理错误信息。在进行文件上传的过程中,有可能因为网络问题或其他原因导致上传操作失败,如果此时您没有正确地处理错误信息,那么下一次上传时程序就会自动判断上一次上传成功,而不会调用上传操作。因此,您需要确保上传操作是在上一次上传操作完全结束后再次开始,同时还需要添加合适的错误处理代码来保证上传操作的顺利进行。 最后,如果上述方法没有解决问题,您可以在控制台输出相关信息,检查程序是否在执行中出现了错误和异常。如果出现相关错误和异常,那么您需要去查并修复它们,才能保证上传操作的正常执行。 ### 回答2: Layui Upload 是一款基于 layui 使用的文件上传组件,可以方便地实现文件的上传和显示,使用灵活简便。在使用layui upload 进行第二次上传时,有时候可能会出现不触发上传的情况。这种情况通常是由于以下几个原因: 一、 文件已上传成功但未返回成功状态码 这种情况通常是由于上传文件过大或者请求超时等因素导致上传文件的返回状态码出现异常,从而导致组件未能获取到上传成功的状态。此时可以在开发者控制台中进行调试,查看返回状态码是否异常。如果确认异常,可以在服务端进行相应的优化,解决上传文件返回状态码的问题。 二、组件被错误配置 在使用 layui Upload 组件时,很容易出现组件配置错误的情况。例如,未正确配置上传地址、文件成功上传后未配置返回消息等问题,都可能导致组件出现不触发上传的情况。针对这种情况,可以仔细查看组件的配置,排除组件配置错误的可能性。 三、文件类型或大小未通过校验 Layui Upload 组件可以对文件进行类型和大小的校验,如果文件不符合规范,组件将会在上传前就拒绝上传文件,从而导致不触发上传的问题。在这种情况下,可以检查文件类型和大小是否符合要求,从而解决问题。 总之,Layui Upload 组件不触发上传的问题可能是由多种因素导致的,需要开发者进行细致的排查和解决。在使用该组件时需要注意细节和规范,避免出现相关问题。 ### 回答3: 先分析下LayUI Upload 第二次上传不触发上传事件的原因,可能存在以下几种情况: 1、上传模式为:多文件上传模式,选择文件时没有弹出文件选择框。这种情况可能是由于JS或CSS文件没有正确引入,或是因为JS脚本中代码出现了错误。 2、第一次上传没有结束就重复上传。原因可能是在上传文件时,在文件上传成功之前,或上传失败之前就尝试进行另一次上传操作,导致第二次上传操作无法触发。 3、没有进行正确的更新和绑定操作。由于layui.upload是一个基于HTML5的上传组件,我们需要在上传成功或失败之后更新form数据,以便在下次上传时读取正确的数据。如果没有进行正确的更新和绑定操作,则可能导致第二次上传不触发上传事件。 以上情况可能都会导致LayUI upload 第二次上传不触发上传事件,需要针对具体的问题进行排查和解决。 针对以上情况,我们可以采取以下方案进行解决: 1、确保JS或CSS文件正确引入,并在JS脚本中进行正确的初始化操作。 2、上传前需要确保上一次上传已经完全结束,可以通过设置多文件上传模式、开启自动上传等方式,让文件上传过程完全结束,再进行下一次上传操作。 3、上传成功或失败之后需要进行正确的更新与绑定操作,以确保上传数据的正确性和连贯性。 以上方案可以轻松解决LayUI upload 第二次上传不触发上传事件的问题,同时也可以有效地提高上传文件的效率和成功率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值