ajax表单提交带文件上传,带文件上传的form表单提交, jquery的ajaxfileupload+插件dropzone图文详解...

2023-05-16

不是建议你,而是强制要求:

跳过方法一直接看方法二。方法一写的太随意了对不起你们,看方法二吧,使用插件dropzone.js,方法一和方法二后台代码都一样。方法二简单好上手,学习成本低。

方法一:

jquery的ajaxfileupload方法

fd4253f1e1c7f2cfc6b740b5b655c962.png

一整体思路概要介绍:

概要介绍之jsp

姓名:

性别:

地址:

οnclick="return ajaxDemoUpload();" value="上传" />

概要介绍之上传文件流程

1 点击选择文件:

a4d31cf1ec0329f76efc6a9b6151a696.png

2      然后点击"上传"后,触发οnclick="return ajaxDemoUpload();"执行ajaxDemoUpload()函数,通过ajax方式,就传给

后台了(后台处理完成后进入ajax的回调函数sucess里,生成“存放文件上传的路径url”的隐藏域,

页面点击提交时,可以把“存放文件上传的路径url”存到数据库中,这样数据库中就只存放图片地址,减轻了数据库的压力,

要展示图片时只要%E6%96%87%E4%BB%B6%E5%9C%B0%E5%9D%80%E8%B7%AF%E5%BE%84)

3      上传完成后,再点击提交按钮,触发事件$("#save").click(function() { })就可以保存表单。

总的思路就是先上传文件,上传完成后把图片路径url保存在隐藏域中,然后再提交整个表单。

所以下文我会分两部分讲,1 上传文件 2 提交/保存 表单。其中1又包括上传文件的js和后台java代码,2包括提交表单的js和后台java代码

下面是表单提交/保存 的js代码,表单提交/保存 的后端代码,上传文件的后端代码,上传文件的js代码,在下面的图片中会具体介绍,这里就概略写

//表单保存的js代码

$("#save").click(function() { //点击save按钮触发这个保存事件

$.ajax({

url : rootPath + '/xxxxx?t=' + new Date().getTime(),

type : 'POST',

data : $('#formId').serialize(),

dataType : 'json',

success : function(d) {}

)};

});

里面用ajax把表单的: 姓名,性别和地址这些数据提交给后台。

提交表单数据给后台我喜欢用这个方法:先给form指定一个id如 id="formId" 然后$('#formId').serialize()就可以把数据提交给后台了,后台直接用

User user就能接收数据,springmvc会自动把数据封装给对应的的user对象里的属性。很方便吧!

后台用的springmvc,我手写一下部分代码:表单保存+文件上传

//表单保存的后台代码

@Controller

public class UserController {

private final static Logger logger = LoggerFactory.getLogger(UserController .class);

//表单保存

@RequestMapping(value = "/user/save")

@ResponseBody

public Map save(Model model, HttpServletRequest request,User user) {

Map map = new HashMap();

if(null==user.xxx){

map.put("message", "不能为空")

return map;

}

try {

userService.save(user);

map.put("message", "保存成功");

map.put("code", "1");

} catch (Exception e) {

map.put("message", e.getMessage());

map.put("code", "0");

logger.error("保存数据异常", e);

}

return map;

}

//文件上传后台代码

@RequestMapping(value = "/fileUpload", method = { RequestMethod.POST, RequestMethod.GET })

@ResponseBody

public Map fileUpload(@RequestParam(value = "file") MultipartFile file,HttpServletRequest request) {

//这里要注意 @RequestParam(value = "file")必须和jsp中的文件上传框的id保持一致,

//你jsp中id=“filefile”这里就要用@RequestParam(value = "filefile")

Map map = new HashMap();

if (file.isEmpty()) {

map.put("message", "文件不能为空");

return map;

}

if (!isTrue) {

map.put("message", "选择正确的文件格式");

return map;

}

if (file.getSize()>file_size) {

map.put("message", "文件大小不能超过2M");

return map;

}

try {

FileUtils.copyInputStreamToFile(file.getInputStream(), new File("你想存放的位置"));

map.put("message", "Y");// 文件上传成功

} catch (IOException e) {

map.put("message", "N");// 文件上传失败

}

String path = fileString.substring(resourceDir.length());//

path = path + fileType;

path = path.replace("\\", "/");

map.put("fileName", path);

return map;

}

二 上面是思路,下面开始具体介绍:图1-1 概要介绍完了,下面介绍具体细节,先介绍文件上传部分。

文件上传:我把js和jsp分离了,方便调试。分离写和把js直接写在jsp的里效果一样,看个人习惯。

2.1 jsp中要引入一个js

jquery的扩展js,ajaxfileupload.js,地址:http://download.csdn.net/detail/wabiaozia/9391303            图1-1jsp部分的1 id="demo" 和图1-1 js部分里的”三“对应,缩略图显示的位置

图1-1jsp部分的 2 id="file" 和图1-1 js部分里的一对应,表示你的上传文件框的id,这个id的值可以随便命名你也可以叫id="fileaaa",

但是要注意这里的id值要和后 台接收的一致,  如你jsp中id="file",value就要为file 后台接收为@RequestParam(value = "file"),你jsp中id=“filefile”后台接收就要

为  @RequestParam(value= "filefile")

3 οnclick="return ajaxDemoUpload() 点击上传后会触发

2.2 js部分              图1-1的js部分 四 处必须为$.ajaxDemoUpload(){},固定的

图片看不清可以另存为看。

956ca0b0fac34b0c5fb5f117a6f14c01.png

-------------------------------------------------------------------图1-1-----------------------------------------

3 bug:可能会报错,问题及解决

http://zhidao.baidu.com/link?url=qqydUngiUoiU6BAVME8oQMB5jcf3HJJOEaCclphvGcuRRRczvWanqP4j0BTupFE3k9-ebdihjsX8QSB5NIsJ1q

方法二 :

使用插件dropzone.js,建议用这个方法,简单上手快

这里有入门教程:http://www.renfei.org/blog/dropzone-js-introduction.html

1 先引入js和css

2 form表单

姓名:

性别:

地址:

>

3 然后在jsp下面body里面写

Dropzone.autoDiscover = false;

var dropz = new Dropzone("#file", {

url: "/",

addRemoveLinks: true,

autoProcessQueue:false,

parallelUploads:8,

maxFiles: 8,//最大可上传的文件个数

maxFilesize: 2,

/* acceptedFiles: ".bmp,.jpg,.jpeg,.gif,.png", */

init: function() {

this.on("removedfile", function(file) {

console.log("File " + file.name + "removed");

});

},

success:function(file,data){

},

dictMaxFilesExceeded:"文件数量过多",

dictDefaultMessage:"拖动文件到该区域或点击上传文件",

dictCancelUpload:"取消",

dictCancelUploadConfirmation:"取消上传操作",

dictRemoveFile:"删除",

dictFileTooBig:"可添加的最大文件大小为{{maxFilesize}}Mb,当前文件大小为{{filesize}}Mb ",

});

dropz.on("removedfile",function(file){

})

b5853529fe49a3e4ecf828fc7e759232.png

后台代码怎么写?和方法一的后台代码一模一样。

你看看方法一后台代码的“

表单保存的后台代码”和“

文件上传后台代码”部分就行了祝你成功。

参考过三篇文章:

1:http://cqjava.iteye.com/blog/2048233

2:http://cqjava.iteye.com/blog/2053119

3 :http://cqjava.iteye.com/blog/2058912

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ajax表单提交带文件上传,带文件上传的form表单提交, jquery的ajaxfileupload+插件dropzone图文详解... 的相关文章

  • 使用PostSharp在.NET平台上实现AOP

    摘要 本文首先介绍AOP xff08 面向方面编程 xff09 的相关概念及理论 xff0c 然后介绍如何使用PostSharp框架在 NET平台上实现AOP xff0c 最后对PostSharp的机制及AOP的优劣进行一个简单的分析 AO
  • python 带头节点的单链表相关函数

    链表用头结点还是头指针让我混乱 在写append函数时 xff0c 发现网上的写法各有不同 xff0c 而带头结点的会更好理解 xff0c 也更简洁 以下是带头结点的单链表一些简单的相关函数 span class token keyword
  • 使用 Beautiful Soup 解析网页内容

    安装Beautiful Soup Beautiful Soup是一个Python的HTML解析框架 xff0c 我们可以利用它方便的处理HTML和XML文档 Beautiful Soup有3和4两个版本 xff0c 目前3已经停止开发 所以
  • ibm服务器报警指示灯含意

    EVENT LOG指示灯报警 有台IBM服务器前面的光通路面板开始亮起了小黄灯 xff0c 推出这个小盒子一看 xff0c 是EVENT LOG指示灯报警 一时不知道是什么原因 xff0c 可能是日志错误 xff0c 要进Configura
  • [概念学习] Virtualization的几个概念

    1 Vitualization xff1a 某种东西的虚拟版本 xff0c 比如硬件平台 操作系统 存储设备 网络资源等 the creation of a virtual version of something such as a ha
  • Windows2012、windows2016配置多用户登录

    windows系统多用户登录配置方法如下 xff0c 但是120天后还是会提示缺少远程桌面授权服务器 xff0c 根本解决办法 xff0c 请参考 xff1a https blog 51cto com 13777088 2299170 服务
  • 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

    在开发涉及到数据库的程序时 xff0c 常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况 xff0c 这时就需要进行数据库迁移 实现数据库迁移有很多种办法 xff0c 从手动管理各个版本的ddl脚本 xff0c 到实现自己的
  • VM virtuaBox异常关机启动不了的解决方案

    事件回放 我的物理机是win7 xff0c 上面装了一个 VM virtualBox 用来装 Centos xff0c 有天物理机非正常关闭 xff0c 导致 VM virtuaBox异常关机启动不 了 xff0c 如下 确实找不到这个vm
  • SpringMVC系列(十一)把后台返回的数据转换成json、文件下载、文件上传

    一 后台返回的数据转换成json 1 引入转换json需要的3个依赖 1 lt json转换需要的依赖 begin gt 2 lt dependency gt 3 lt groupId gt com fasterxml jackson co
  • html 复选框checkbox

    阅读目录 统计选中复选框的个数点击复选框 xff0c 执行相应的函数复选框的状态层次关系 xff0c 选中父节点 xff0c 子节点全部选中 回到顶部 统计选中复选框的个数 lt html gt lt head gt lt title gt
  • android kk界面旋转流程_Android屏幕旋转前180度旋转以正确定向

    由于硬件问题 xff0c 我们必须将我们开发的Android平板电脑上下180度安装 我们设法翻转屏幕回来做以下修改 xff0c 以正确的方向 xff1a Android屏幕旋转前180度旋转以正确定向 框架 基 服务 SurfaceFli
  • 理解 简单的递归实现阶乘过程中的参数传递

    span class token keyword def span span class token function factorial span span class token punctuation span n span clas
  • 程序员工作中的一些建议

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 尽早地添加日志记录和错误处理 在开发新系统时 xff0c 我做的第一件事就是添加日志和错误处理 xff0c 因为这两者从一开始就非常有用 如果系统不能照常工作 xff0
  • MongoDB简单介绍以及基本命令

    一 MongoDB简介 1 MongoDB是什么 MongoDB 是一个基于分布式文件存储的数据库 由 C 43 43 语言编写 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB 是一个介于关系数据库和非关系数据库之间
  • MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据

    MariaDB 10 0 X中 xff0c 动态列 xff08 Dynamic Columns xff09 xff0c 可以支持 JSON 格式来获取数据 为了兼容传统SQL语法 xff0c MariaDB 10和MySQL5 7支持原生J
  • Linux系统之TroubleShooting

    尽管Linux系统非常强大 xff0c 稳定 xff0c 但是我们在使用过程当中 xff0c 如果人为操作不当 xff0c 仍然会影响系统 xff0c 甚至可能使得系统无法开机 xff0c 无法运行服务等等各种问题 那么这篇博文就总结一下一
  • k8s容器内的东西复制出来_如何把文件放进Docker或Kubernetes中,如何拷贝出来

    1 前言 在有些场景 xff0c 我们需要把外部的文件放到Docker容器中 xff0c 或者Kubernetes的Pod中去 xff0c 让应用去读取数据 2 Docker 1 从宿主复制文件到Docker容器 xff1a docker
  • ps怎么加底部阴影_PS给物体底部加阴影

    因为要再花瓶的底部加上阴影 xff0c 所以花瓶必须背景是透明 xff0c 这样就要先把花瓶扣出来 xff0c 底部新建一个图层 xff0c 添加阴影 1 用通道抠图 xff0c 把整个花瓶给抠出来 复制蓝色通道 xff0c ctrl 43
  • python抢票软件源代码_一百多行python代码实现抢票助手

    一百多行python代码实现抢票助手 来源 xff1a 中文源码网 浏览 xff1a 次 日期 xff1a 2019年11月5日 下载文档 一百多行python代码实现抢票助手 txt 友情提示 右键点上行txt文档名 gt 目标另存为 一
  • ubuntu终端显示用户名和计算机名,ubuntu系统下用户名及主机名修改

    一 主机名修改 xff1a Linux主机名是在安装Linux操作系统的过程中设定的 xff0c 并作为网络中的某一台主机的唯一标志 xff0c 但是在安装好Linux系统后 xff0c 如果想修改主机名 xff0c 该怎么办呢 本文介绍基

随机推荐