Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ajax使用formData提交带图片上传的表单

Ajax使用formData提交带图片上传的表单

作者头像
sunonzj
发布于 2022-06-21 06:46:17
发布于 2022-06-21 06:46:17
2.8K00
代码可运行
举报
文章被收录于专栏:zjblogzjblog
运行总次数:0
代码可运行

记录一下今天踩过的坑。。这么个问题居然搞了快两个小时了。ssm框架,前台form带图片上传,因为效验表单数据,所以不能直接submit。

formDat还是很简单的,有很多加值得方法,后台可以直接用对象接收。

使用ajax提交有很多种方式,说一下使用formDat,直接贴代码。

前端一个form表单,带图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form id="form1"  enctype="multipart/form-data">
            <label class="aui-label-control"> 昵称 </label>
                    <input type="text"  name="userName" id="1" > 
            <label class="aui-label-control"> 手机号码 </label>
                    <input type="text"  name="phone" id="2" "/>
            <label class="aui-label-control"> 所在城市 </label>
                    <input type="text"  name="city" id="3"  />
            <label class="aui-label-control"> 更换头像  </label>
                    <input type="file" name="file" id="file" multiple />
                <a onclick="severCheck()" >确认修改</a> 
 </form>

js代码:ajax提交

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function severCheck() {
            var formData = new FormData();
            var userName = $("#1").val();
            var file = $("#file")[0].files[0];
            var phone = $("#2").val();
            var userId = $("#userId").val();
            var city = $("#3").val();
            var reg = /^1[34578]\d{9}$/;
            var bool = false;
            if (userName.length < 1 || userName.length > 12) {
               ...
            } else {
                ...
            }
    
            if (phone != "" && !(reg.test(phone))) {
                ...
                return false;
            }
            if ( city != "" && city.length > 10) {
                ...
                    return false;
            }
    
            if (bool) {
                return false;
            }
            
            if (file != "") {
                formData.append("file", file);
            }
            formData.append("city",  city);
            formData.append("userName", userName);
            formData.append("userId", userId);
            formData.append("phone", phone);
            $.ajax({
                type : "POST",
                url : "<%=path%>/editUserInfo",
                data : formData,
                cache : false,
                processData : false,
                contentType : false,
                success : function(data) {
                    window.location.reload();
                    if ("success" == data.msg) {
                       ...
                        window.location.href = "<%=path%>/index";
                    } else if ("error" == data.msg) {
                       ....
                    }
                },
              error:function(data){
                    window.location.reload();
                    if ("success" == data.msg) {
                       ...
                        window.location.href = "<%=path%>/index";
                    } else if ("error" == data.msg) {
                        ....
                    }
              }
            });
        }

后端代码:springmvc接收后端代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @RequestMapping("/editUserInfo")
    @ResponseBody
    public JSONObject EditUserInfo(HttpSession session, HttpServletRequest request,
        @RequestParam(value = "file", required = false) MultipartFile file, 
        UserInfo userInfo) {
        JSONObject json = new JSONObject();
       
        // 图片上传
        // 如果文件不为空,写入上传路径
        if (Tools.isNotEmpty(file)) {
            // 循环获取file数组中得文件
            // 上传文件
            String fileName = Tools.saveFile(file, request);
            //图片路径保存到数据库
            userInfo.setHeadUrl(fileName);
        }
        userInfo.setUpdatetime(new Date());
        int result = userInfoService.editUserInfo(userInfo);
        if (result == 1) {
            // session.removeAttribute("pagenum");          
            json.put("msg", "success");

        } else {
            json.put("msg", "error");
        }
        return json;
    }

其实很简单,只需注意几个点。

1、用formData格式传输参数Controller的参数名也要和form表单name对应

2、因为我之前是用var file = $('#file').val();得到的file,后台用MultipartFile file一直接收不到(就是这地方搞了好久)

后来慢慢调错,发现Controller里用String file 就能收的到,就觉得肯定是前台传过来的不对,然后前台alert(file)发现是图片路径,不是Object对象,是一个字符串

实在没想到。。。改成这样就好了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 var file = $("#file")[0].files[0];

直接new formData(“form...”) 好像也是传的string类型图片。

省略了很多.....这编辑器不好写代码,复制过来又会乱。。等改善吧

反正遇到问题一步一步来,脑子蒙圈实在不知道哪有问题,看代码好像哪也没有问题...这时候就要不断调式缩小范围,然后排除一些不可能有问题的地方,针对一些可能会有问题或者不确定有没有问题的地方不断测试,利用debug 和 控制台输出。总是能解决的。


本来这会已经躺床上了....  

NYN

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django—Form、ModelFor
一、Form form.py from django import forms from django.core.exceptions import ValidationError from django.contrib.auth.models import User import re # 定义手机号验证规则 def phone_validate(value): phone = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[
py3study
2020/01/16
1K0
Ajax上传图片以及上传之前先预览
手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成。在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果,解决了这两个小问题,和小伙伴们分享下。 ---- 上传之前的预览 方式一 先来说说图片上传之前的预览问题。这里主要采用了HTML5中的FileReader对象来实现,关于FileReader对象,如果小伙伴们不了解,可以查看这篇博客http://blog.csdn.net/zk437092645/articl
江南一点雨
2018/04/02
1.8K0
Ajax上传图片以及上传之前先预览
Django学习笔记之利用Form和Ajax实现注册功能
一、注册相关的知识点 1、Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放 2
Jetpropelledsnake21
2018/07/04
9860
django搭建BBS-表单创建&注册
django搭建BBS-表单创建&注册 0824自我总结 文件结构 app 接口 migrations __inint__.py admin.py 管理员页面注册表单用 apps.py bbsform.py form组件相关设置 models.py 模型存放 tests.py views.py 业务逻辑 avatar 图片文件存储 BBS 项目名称以及路由存放 __inint__.py settings.py urls.py wsgi.py static bootstrap-3.3.7-dist bo
小小咸鱼YwY
2019/09/11
1.8K0
BBS项目(三)
目录 BBS项目(三) 注册forms类编写局部钩子和全局钩子 注册功能前端 注册功能后端 注册功能前端错误渲染 登录页面搭建 验证码 点击刷新验证码 登录功能前后端 首页页面搭建 BBS项目(三) 注册forms类编写局部钩子和全局钩子 '''forms校验''' from django import forms from django.forms import widgets from blog import models from django.core.exceptions import
HammerZe
2022/03/24
8270
BBS项目(三)
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
本文实例讲述了PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作。分享给大家供大家参考,具体如下:
用户8664418
2021/07/13
1.5K0
ajax图片上传
直接上代码: 前端【表单与ajax】: <div> <input type="file" class="form-control" id="filePic" onchange="uploadImg()"/> </div> <div> <img src="" alt="" id="picShow" width="100" height="100" /> </div> <script> //图片上传 function uploadIm
红目香薰
2022/11/29
4.3K0
周末手撸管理系统(一)
周末手撸管理系统(一) 已完成 大体模板 用户登入注册 明天加商品订单商品进去 完成效果图 注册 登入 1.首先进行设置 settings.py """ Django settings for drf
小小咸鱼YwY
2019/09/12
6430
周末手撸管理系统(一)
python测试开发django-178.ajax实现form表单文件上传
form表单内容,需添加属性:enctype=”multipart/form-data”
上海-悠悠
2021/12/29
9600
python测试开发django-178.ajax实现form表单文件上传
AJAX 表单序列化
###文件表单 html: <form id="uploadForm" enctype="multipart/form-data" style="margin-left: 550px;margin-top: 150px;"> 账户:<input type="text" name="username" id="username"><br> 密码:<input type="text" name="password" id="password"><br> 电话:<input type="text" name
问天丶天问
2018/06/19
8610
36·Python项目-博客(前后不分离)
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/11/08
9400
36·Python项目-博客(前后不分离)
Ajax 实战
AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)
HammerZe
2022/03/25
1.7K0
Ajax 实战
前端处理图片上传的几种方式
在用html5实现图片预览功能这篇文章中只是介绍了图片上传过程中预览的实现,那关于图片上传有哪几种方式呢?
挥刀北上
2019/08/06
5.5K0
jQuery+ajax实现简单的上传图片功能
在前面的文章里面有写到,用vue上传图片的功能,vue-element-admin上传图片的功能:https://www.jianshu.com/p/383e1f2f4276,那如果是在jQuery里面,图片上传要怎么写?今天记录一个jQuery+ajax实现简单的上传图片功能。
王小婷
2020/10/28
1.3K0
Django实现文件图片的上传
目录 1 需求 2 实现 2.1 前端 2.2 后端 3 案例 3.1 前端vue 3.2 后端 1 需求 image.png 2 实现 2.1 前端 image.png 2.2 后端 image.png image.png image.png image.png 3 案例 3.1 前端vue <el-form-item label="静息影像:"> <el-upload :show-file-list=false action="你的URL"
一写代码就开心
2022/05/16
9960
Django实现文件图片的上传
ajax文件上传-FormData()
HTML: 1 <form action=""> 2 3 <input type="file" id="file1" name=""> 4 5 <br> 6 7 <input type="file" id="file2" name=""> 8 9 <br> 10 11 <input type="button" value="保存"> 12 13
ProsperLee
2018/10/24
5.3K0
ajax文件上传-FormData()
springMVC实现文件图片的上传下载功能详解(源码已提供,小白必看)(一)
我们在做项目的时候,有时候遇见要实现Word文件,图片实现上传和下载,springmvc给我们提供了很好的方法,以下将从前端到后端进行详解,附带源码和实现效果
一写代码就开心
2020/11/19
2.3K0
springMVC实现文件图片的上传下载功能详解(源码已提供,小白必看)(一)
matinal:python 上传多个文件
matinal
2023/10/14
5570
base64编码图片数据存储服务器
我在刚开始接触base64编码图片数据时,就是把base64编码图片数据传到后台来解码生成图片。导致生成的图片无法打开,后来才发现其实传到后台的base64编码根本就不完整,导致解码出现问题,无法显示图片。所以,base64编码只能在前端处理。
全栈程序员站长
2022/07/29
2K0
图片上传转换成Base64,然后再转成 file 提交给后端
更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120055802
马克社区
2022/07/15
6580
相关推荐
Django—Form、ModelFor
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档