表单提交时上传图片 表单ajax提交
页面
<script type="text/javascript" src="js/jquery.form.js"></script>
<script language="javascript">
$(function() {
//提交表单
$("#add").click(function() {
if($('#addForm').form('validate')){
var options = {
url: '${currentBaseUrl}/doAdd',
type: 'post',
success: function (data) {
if("ok"==data.message)
window.location.href=data.backUrl;
else{
$.messager.alert('提示', data.message);
$("#imageFile").val("").focus()
}
}
};
$('#addForm').ajaxSubmit(options);
}
});
})
</script>
<form method="post" class="validForm" id="addForm" name="addForm" enctype="multipart/form-data">
<input type="file" id="imageFile" name="imageFile" class="txt w240 easyui-validatebox" />
<input type="button" id="add" class="btn" value="提交" />
</form>
Controller类
@RequestMapping(value = "doAdd", method = { RequestMethod.POST })
@ResponseBody
public HttpJsonResult<Object> doAdd(MultipartHttpServletRequest request, HttpServletResponse response, FbNews news){
HttpJsonResult<Object> jsonResult = new HttpJsonResult<Object>();
try {
MultipartFile multipartFile = request.getFile("imageFile");
if (null != multipartFile && multipartFile.getSize() > 0) {
//扩展名
String extend = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if (!isImg(extend)) {
jsonResult.setMessage("请上传图片!");
return jsonResult;
}
File tmpFile = new File(buildImgPath(request) + "/"+ multipartFile.getOriginalFilename());
if (!multipartFile.isEmpty()) {
byte[] bytes = multipartFile.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(tmpFile));
stream.write(bytes);
stream.close();
}
}
/**其他代码省略**/
jsonResult.setMessage("ok");
//添加成功 返回列表页面
jsonResult.setBackUrl(DomainUrlUtil.getJM_URL_RESOURCES() + "/admin/fbfc/news");
return jsonResult;
} catch (Exception e) {
throw new RuntimeException();
}
}
//是否是图片
private boolean isImg(String extend) {
List<String> list = new ArrayList<String>();
list.add("jpg");
list.add("jpeg");
list.add("bmp");
list.add("gif");
list.add("png");
list.add("tif");
return list.contains(extend);
}
//图片上传的路径
private String buildImgPath(HttpServletRequest request) {
String path = "upload";
SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd");
path += "/" + formater.format(new Date());
path = request.getRealPath(path);
File dir = new File(path);
if (!dir.exists()) {
try {
dir.mkdirs();
} catch (Exception e) {
log.error("error", e);
}
}
return path;
}
表单提交时上传图片 表单ajax提交的更多相关文章
- Form表单利用Jquery Validate验证以及ajax提交
#表单利用Jquery验证验证以及ajax提交 概述>详细讲解表单利用Jquery >验证验证以及ajax提交的过程,以及Validate的自定义提示语,非空判断,输入字段的远程ajax验 ...
- flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因
flask用宏渲染表单模板时,表单提交后,提交的内容符合DataRequired()校验, 但是form.validate_on_submit()返回的是False, 原因可能是表单模板中的<f ...
- form表单提交数据,页面必定会刷新,ajax提交数据不会刷新,做到悄悄提交,多选删除,ajax提交实例
很多页面用到的模态对话框,如知明网站https://dig.chouti.com/的登录页都是模态对话框, 当点登录时,是用的ajax提交,因为输入错了信息,有返回消息,而页面没有刷新. jquery ...
- git提交时设置忽略部分文件提交
git当前提交项目时总是会提交很多东西把Debug文件也提交了 在项目根目录(例如我的项目文件夹下,.sln文件的上一级目录)下建一个.gitignore文件,文件内容直接可粘贴下面的,这样 pack ...
- Ajax提交Form表单的一种方法
待提交的表单 <form id="updatePublicKey" enctype="multipart/form-data"> <div c ...
- ajax提交表单、ajax实现文件上传
ajax提交表单.ajax实现文件上传,有需要的朋友可以参考下. 方式一:利用from表单的targer属性 + 隐藏的iframe 达到类似效果, 支持提交含有文件和普通数据的复杂表单 方式二:使用 ...
- jQuery判断 form表单提交时一些文本框的判断
一: form表单提交时如果表单里有input标签为空那么不提交form表单. <head> <script type="text/javascript"> ...
- form表单提交没有跨域问题,但ajax提交存在跨域问题
浏览器的策略本质是:一个域名下面的JS,没有经过允许是不能读取另外一个域名的内容,但是浏览器不阻止你向另外一个域名发送请求. 所以form表单提交没有跨域问题,提交form表单到另外一个域名,原来页面 ...
- js实现表单验证 常用JS表单验证
CSS代码 @charset "gb2312"; /* CSS Document */ body,dl,dt,dd,div,form {padding:;margin:;} #he ...
随机推荐
- java servlet输出数据
httpServletResponse.setContentType("text/html;charset=UTF-8"); httpServletResponse.getWrit ...
- 2.如何使用python连接hdfs
总所周知,python是一门很强大的语言,主要在于它有着丰富的第三方模块,当然连接hdfs的模块也不例外. 在python中有一个模块也叫hdfs,可以使用它连接hadoop的hdfs.直接pip i ...
- 【集合类型的并发】Collections.synchronizedList
摘要: 详细的解析:Collections.synchronizedList :关注要点,为什么在有synchroniezed方法的同时会出现 Collections.synchronizedList ...
- shell字符串变量的特异功能:字符串的替换(${str/源模式/目标模式},${str//源模式/目标模式})、截断
https://blog.csdn.net/wzb56_earl/article/details/6953612
- STL优先队列——踩坑日记
priority_queue 可以定义STL中的优先队列,但是优先队列在应用于自己定义的类型时需要重载<运算符,或者通过仿函数来定义比较方法,在定义比较方法的过程中,比较大的坑是STL中对于参数 ...
- linux中MySQL本地可以连接,远程连接不上问题
1.网络或防火墙问题 (1)检查网络直接ping你的远程服务器,ping 182.61.22.107,可以ping通说明网络没问题 (2)看端口号3306是不是被防火墙挡住了,telnet 182.6 ...
- Python3 数字
layout: post title: Python3 数字 author: "luowentaoaa" catalog: true tags: mathjax: true Pyt ...
- 洛谷——P2758 编辑距离
P2758 编辑距离 题目描述 设A和B是两个字符串.我们要用最少的字符操作次数,将字符串A转换为字符串B.这里所说的字符操作共有三种: 1.删除一个字符: 2.插入一个字符: 3.将一个字符改为另一 ...
- leetcode83 Remove Duplicates from Sorted List
题意:删掉单链表里重复的节点,如:Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2 ...
- IO 概括
# 一.概览 Java 的 I/O 大概可以分成以下几类: - 磁盘操作:File- 字节操作:InputStream 和 OutputStream- 字符操作:Reader 和 Writer- 对象 ...