form表单的一个页面多个上传按钮实例
/* * 图片上传 */
@RequestMapping("/uploadFile") @ResponseBody public String uploadFile(@RequestParam(value = "imageAddr", required = false)String imageAddr,@RequestParam(value = "genre", required = false)String genre,@RequestParam(value = "uploadFile", required = false) MultipartFile uploadFile,HttpServletRequest request, HttpServletResponse response){ MapresultMap=new HashMap();
//获取当前时间 File.separator等同于/或者\\
String fileFolder = File.separator + DateUtil.getYear(new Date())
+ File.separator + DateUtil.getMonth(new Date()) + File.separator
+ DateUtil.getDay(new Date());
String fileName =uploadFile.getOriginalFilename();//获取文件上传的名称
String newFileName="";
//获取照片类型 人员/车辆
System.out.println(fileName);
System.out.println(genre+imageAddr);
try
{
String uploadPath="";//图片上传的目录
InputStream in = this.getClass().getResourceAsStream("/conf.properties");
Properties props = new Properties();
InputStreamReader inputStreamReader = new InputStreamReader(in, "UTF-8");
props.load(inputStreamReader);
if("renyuan".equals(genre)) {
uploadPath = props.getProperty("renyuan_Upload_path")+fileFolder;
}else if ("cheliang".equals(genre)) {
uploadPath = props.getProperty("cheliang_Upload_path")+fileFolder;
}
//重新命名
if(null!=fileName){
newFileName=UUID.randomUUID ()+fileName.substring (fileName.lastIndexOf ("."));
}
File files=new File(uploadPath,newFileName);
if(!files.exists ()){
files.mkdirs ();
}
uploadFile.transferTo (files);
resultMap.put("fileAdress",fileFolder+File.separator+newFileName);
resultMap.put("imageAddr",imageAddr);
resultMap.put("uploadFlag",true);
}
catch (Exception e)
{
resultMap.put("uploadFlag",false);
//记日志
}
String json=JSONObject.toJSONString(resultMap).toString();
writeJson(json,response);
return null;
}
/*
* 写入数据
*/
private void writeJson(String json, HttpServletResponse response) {
response.setContentType("application/json;charset=UTF-8");
PrintWriter out = null;
try {
out = response.getWriter();
out.print(json);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != out) {
out.close();
}
}
}
上面是上传图片的控制层
下面是上传图片的ajax提交
function upload(path) {
var form = new FormData();
var xx = $(":input[name='uploadName']").val();
var ImageName = document.getElementsByName("uploadName")[0].value;
var uploadName = ImageName.name;
alert(ImageName);
var genre=$(":input[name='genre']").val();
var imageAddr=$(":input[name='imageAddr']").val();
//追加图片类型 人员/车辆
form.append(genre,genre);
//追加回传照片地址
form.append(imageAddr,imageAddr);
form.append(uploadName,ImageName);
alert(path);
$.ajax({
type: "POST",
url:"uploadFile",
contentType:'multipart/form-data',
data:form,
// 下面三个参数要指定,如果不指定,会报一个JQuery的错误
cache: false,
contentType: false,
processData: false,
async: false,
success: function(data) {
console.log(data);
if(data.uploadFlag==true){
alert("上传成功");
console.log("地址"+data.imageAddr);
console.log("图片名"+data.fileAdress);
alert(data.imageAddr);
alert(data.fileAdress);
//往input框里传值
document.getElementById(data.imageAddr).value=data.fileAdress;
$("#ImgPr").attr("src",data.fileAdress);
}else{
alert("上传出错");
}
}
});
}

多个form表单提交
图片预览可以在网上很多素材 也可以用下面发的那个 也可以上传完成后拿回传的图片路径追加给img的src显示
jQuery.fn
.extend({
uploadPreview : function(opts) {
var _self = this, _this = $(this);
opts = jQuery.extend({
Img : "ImgPr",
Width : 100,
Height : 100,
ImgType : [ "gif", "jpeg", "jpg", "bmp", "png" ],
Callback : function() {
}
}, opts || {});
_self.getObjectURL = function(file) {
var url = null;
if (window.createObjectURL != undefined) {
url = window.createObjectURL(file)
} else if (window.URL != undefined) {
url = window.URL.createObjectURL(file)
} else if (window.webkitURL != undefined) {
url = window.webkitURL.createObjectURL(file)
}
return url
};
_this
.change(function() {
if (this.value) {
if (!RegExp(
"\.(" + opts.ImgType.join("|")
+ ")$", "i").test(
this.value.toLowerCase())) {
alert("选择文件错误,图片类型必须是"
+ opts.ImgType.join(",")
+ "中的一种");
this.value = "";
return false
}
//高版本Jquey使用 if ($.support.leadingWhitespace)
if ($.support.leadingWhitespace) { //低版本jquery中使用$.browser.msie
console
.log(_self
.getObjectURL(this.files[0]));
try {
_this
.parent('div')
.find("." + opts.Img)
.attr(
'src',
_self
.getObjectURL(this.files[0]));
} catch (e) {
var src = "";
var obj = _this.parent('div')
.find("." + opts.Img);
var div = obj.parent("div")[0];
_self.select();
if (top != self) {
window.parent.document.body
.focus()
} else {
_self.blur()
}
src = document.selection
.createRange().text;
document.selection.empty();
obj.hide();
obj
.parent("div")
.css(
{
'filter' : 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',
'width' : opts.Width
+ 'px',
'height' : opts.Height
+ 'px'
});
div.filters
.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src
}
} else {
_this
.parent('div')
.find("." + opts.Img)
.attr(
'src',
_self
.getObjectURL(this.files[0]))
}
opts.Callback()
}
})
}
});
$(".up").click(function() {
$(this).uploadPreview({
Img : "ImgPr"
});
})
form表单的一个页面多个上传按钮实例的更多相关文章
- webuploader的一个页面多个上传按钮实例
借鉴一位大佬的demo 附上他的github地址https://github.com/lishuqi 我把他的cxuploader.js改了不需要预览 直接上传图片后拿到回传地址给img标签显示图 ...
- Ajax模拟Form表单提交,含多种数据上传
---恢复内容开始--- Ajax提交表单.使用FormData提交表单数据和上传的文件(这里的后台使用C#获取,你可以使用Java一样获取) 有时候前台的数据提交到后台,不想使用form表单上传,希 ...
- webuploader 百度上传,一个页面多个上传按钮
需求:列表里每条数据需加文件上传 html: <div> <ul class="SR_wrap_pic"></ul> <button ty ...
- 【文件上传】文件上传的form表单提交方式和ajax异步上传方式对比
一.html 表单代码 …… <input type="file" class="file_one" name="offenderExcelFi ...
- 提交form表单不刷新页面案列
提交form表单不刷新页面其实很简单的,这里拿上传图片来举列,大家有什么其它的方法也欢迎留言告知与我 <form action="" method="post&qu ...
- form表单中只有一个input时,按回车键后表单自动提交(form表单的一个小坑)
form中只有一个input按回车键表单会自动提交 在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一 ...
- 用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮
需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为 ...
- angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
step1:引入文件 引入Plupload *该SDK上传功能集于Plupload插件封装,所以需要下载Plupload; plupload.dev.js 引入qiniu.js为了简便,当时直接从官网 ...
- servlet文件上传2——复合表单提交(数据获取和文件上传)
上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(common ...
随机推荐
- phantomjs rendering
http://wwwy3y3.ghost.io/pageres-phantomjs-capture-sreenshot-chinese-fonts-not-render-correctly/ 在使用中 ...
- Zabbix3.4服务器的搭建--CentOS7
本教程是目前最简单的Zabbix搭建教程.因为不是编译方式,直接用官方的分发包(rpm)安装. 1.前期准备 安装CentOS 7.4系统后.开启网络功能,其他东西均可不装.切记一定不要配置环境.还有 ...
- UEditor 中配置可以跨域访问的图片路径
文档里很清楚:http://fex.baidu.com/ueditor/#server-path 进入配置文件 当域名不是直接配置到项目根目录时,例:http://a.com/b/c 域名下有两文件 ...
- copy "xxxxx\xx.dll xxxxxxx\ ” 已退出,代码为1 错误解决方法
右键=>属性=>生成事件里面,查看预先生成事件命令行和后期生成事件命令行,查看复制的Dll是否存在已经路径是否正确
- 随滚动条滚动,始终处于屏幕的中间类似qq的浮动窗口 (能看到运动的过程)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- java动态代理的实现以及原理
1.前言 之前对动态代理的技术只是表面上理解,没有形成一个体系,这里总结一下,整个动态代理的实现以及实现原理,以表述的更清楚一些. 2.动态代理的实现应用到的技术 1.动态编译技术,可以使用Java自 ...
- Python解析配置文件模块:ConfigPhaser
算是前几周落下的博客补一篇.介绍一下python中如何解析配置文件.配置文件常用的几种格式:xml,json,还有ini.其中ini算是最简单的一种格式,因为小,解析的速度也要比xml和json快(并 ...
- JS常用方法封装
迭代添加各种常用方法:项目中一定会有很多常用的方法,包括:取值,校验,等...... 获取 url 后的参数 function getQueryString(name) { var reg = new ...
- js 获取网页宽/高度
网页可见区域宽度: document.body.clientWidth 网页可见区域高度: document.body.clientHeight 网页可见区域宽度: document.body.off ...
- java 中重载(Overload)和重写(Override)的区别
首先重载和重写是应用于两个不同场景下面的两种不同的手段: 两者各自的特征: 重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不 ...