layui文件上传组件“请求上传接口出现异常”问题解决方案
这是一个悲伤的故事,以前开发项目用过很多次这个组件,这次使用了Token,于是报了一些莫名其妙的错误,来复盘一下,警示自己!
刚开始接触layui的同学们肯定经常会看到这个错误

下面我们对这个异常的处理方案来总结一下:
(1)Controller层的接口返回格式不对
这是最常见的错误,我们先看一下官方文档的接口要求

这里注意一下最后两段话,可以不按照此格式,但是必须是JSON字符串,绝大多数情况在Controller层的方法上面加SpringMVC的@ResponseBody注解就可以了
下面以我自己的返回格式实例吧
1 {
2 code: 0,
3 message: "成功!",
4 data: {
5 avator: "/20200327173430124807720.jpg"
6 }
7 }
(2)被配置好的SpringMVC拦截器给拦截住了
这里的话我建议大家在拦截器中打印一下request的URL来看看是否被拦截器拦截,从而判断是否发出请求
(3)请求到了Controller但是没接收到文件

在文件上传的函数中指定field属性设置字段名即可
后端Controller同时也要设置指定字段

字段对应之后就问题不大了
(4)请求头加Token的问题
同样在官方文档中也有讲解

在header中指定属性就可以了
但是,我这里就要吐槽一下心姐和layui团队了,如上图所示的token是不能使用字符串来表示的,必须直接输属性!!不然的话upload组件是不会向后端发出请求,并且会报出接口错误的异常
例如:
headers: {access_token: “12313213213213”}
而不是:
headers: {"access_token": “12312313213213213”}
否则你的浏览器开发者工具控制台就会报一串乱七八糟的数字,我刚才还想复现一下这个异常,结果改回去还是可以,我尼玛人都傻了
最后附上我的前端代码吧
1 //修改头像
2 var uploadFile = upload.render({
3 elem: '#uploadAvator',
4 url: projectPrefix + 'user/uploadUserAvator.action',
5 accept: 'images',//校验上传文件类型
6 headers: {access_token: localStorage.access_token},
7 acceptMime: "image/*",
8 auto: true,
9 multiple: false,//多文件上传
10 field: "avator",//设置字段名
11 before: function () {
12 layer.msg('上传中', {
13 icon: 16,
14 shade: 0.01
15 }); //上传loading
16 }
17 , done: function (res) {
18 //上传完毕回调
19 layer.close(layer.index); //关闭loading
20 if (parseInt(res.code) === 0) {
21 layer.msg("修改成功!");
22 $(".avator").attr("src", hostLocation + "/avator" + res.data.avator);
23 }
24 }
25 , error: function (res) {
26 //请求异常回调
27 console.error(res);
28 }
29 });
两个引号引发的血案,折腾了一下午,大家引以为戒吧。。。。
layui文件上传组件“请求上传接口出现异常”问题解决方案的更多相关文章
- resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现
在git上提供了java.nodejs.c#后台服务方式:在这里我要用c#作为后台服务:地址请见:https://github.com/23/resumable.js 我现在visual studio ...
- element-ui上传组件,通过自定义请求上传文件
记录使用element-ui上传组件,通过自定义请求上传文件需要注意的地方. <el-upload ref="uploadMutiple" :auto-upload=&quo ...
- layui文件上传进度条(模拟)
1.修改上传组件js(没测) https://blog.csdn.net/weixin_42457316/article/details/81017471 https://www.cnblogs.co ...
- JS组件系列——Bootstrap文件上传组件:bootstrap fileinput
前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...
- 使用swfupload上传超过30M文件,使用FLASH上传组件
原文:使用swfupload上传超过30M文件,使用FLASH上传组件 前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传. 后来服务 ...
- 多文件上传组件FineUploader使用心得
原文 多文件上传组件FineUploader使用心得 做Web开发的童鞋都知道,需要经常从客户端上传文件到服务端,当然,你可以使用<input type="file"/> ...
- Layui文件上传样式在ng-dialog不显示的问题处理
1.项目业务改动,在一个弹窗页面加图片上传. 2.页面使用angular框架,图片上传使用layui的文件上传组件. js: layui.upload({ url: '/test/upload.jso ...
- 文件上传组件FileUpload 以及邮箱搭建JavaMail
文件上传与下载 1.1 文件上传 案例: 注册表单/保存商品等相关模块! --à 注册选择头像 / 商品图片 (数据库:存储图片路径 / 图片保存到服务器中指定的目录) 文件上传,要点: 前台: 1 ...
- BootStrap fileinput.js文件上传组件实例代码
1.首先我们下载好fileinput插件引入插件 ? 1 2 3 <span style="font-size:14px;"><link type="t ...
随机推荐
- 【Java分享客栈】一个包装过简历的新同事写完微信支付引起事故后果断离职了
前言 挺长时间没发文了,因为公司有一个紧急项目要赶进度,加班如吃饭喝水,久违的进入到码农的状态. 之所以抽空来发个文,是这个项目才刚上线,时间不长却因为一位新同事的代码引起了生产环境的事故,造成了一批 ...
- centos7运行system-config-kickstart时报错
centos7运行system-config-kickstart时在Package Selection模块中出现如下错误: Package Selection Packageselection is ...
- Android 12(S) 图形显示系统 - BufferQueue/BLASTBufferQueue之初识(六)
题外话 你有没有听见,心里有一声咆哮,那一声咆哮,它好像在说:我就是要从后面追上去! 写文章真的好痛苦,特别是自己对这方面的知识也一知半解就更加痛苦了.这已经是这个系列的第六篇了,很多次都想放弃了,但 ...
- github打开之后下载缓慢或者下载不了问题的解决
我是一点击下载就会显示下载不了,然后按照网上的教程看的修改hosts文件.大家可以先用这个方法,如果还是不行就可以按照以下操作. 1.登录https://gitee.com/(没有账号的先注册).2. ...
- MYSQL如何在创建表时添加判断条件
大家好,我是小皓. 一.背景 今天在博主练习MYS创建表操作时遇到一个语法报错,就想着来和大家分享一下MYSQL如何在创建表时添加判断条件: ERROR 1064 (42000): You have ...
- 先知xss挑战赛学习笔记
xss游戏 游戏地址:http://ec2-13-58-146-2.us-east-2.compute.amazonaws.com/ LEMON参考wp地址 1. 文件上传 源码如下 <?php ...
- dfs:10元素取5个元素的组合数
#include "iostream.h" #include "string.h" #include "stdlib.h" int sele ...
- 不会DRF?源码都分析透了确定不来看?
目录 不会DRF?源码都分析透了确定不来看? 快速使用DRF写出接口 序列化和反序列化 drf快速使用 views.py serializer.py urls.py 在settings的app中注册 ...
- SpringBean的生命周期 以及一些问题总结
SpringBean的生命周期 一.传统 Bean 的生命周期 new实例化: 可使用了 无引用时,GC回收. 二.Servlet 的生命周期 实例化Servlet对象: init初始化对象: 相应客 ...
- JDBC中大数据量的分页解决方法?
最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容. sql语句分页,不同的数据库下的分页方案各不一样,下面是主流的三种数据库的分页sql: oracle: selec ...