/* * 图片上传 */@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"});})

转载于:https://www.cnblogs.com/dahei96/p/9283897.html

form表单的一个页面多个上传按钮实例相关推荐

  1. ajax 模拟表单提交,Ajax模拟Form表单提交,含多种数据上传

    ---恢复内容开始--- Ajax提交表单.使用FormData提交表单数据和上传的文件(这里的后台使用C#获取,你可以使用Java一样获取) 有时候前台的数据提交到后台,不想使用form表单上传,希 ...

  2. 微信小程序实现用form表单包裹输入的数据并上传到服务器

    两个输入框分别为input与textarea,然后用form表单包裹两个输入框所输入的数据,再上传到服务器,效果图: post.wxml <form bindsubmit="formS ...

  3. HTML中的form表单有一个关键属性 enctype

    HTML中的form表单有一个关键属性 enctype=application/x-www-form-urlencoded 或multipart/form-data. 1.enctype=" ...

  4. Form表单嵌套一个Input引发,页面刷新或者白屏问题

    之前做一个关于electron-vue的项目,在上线之后引发了白屏的问题 当时在测试环境的时候,但是只会有页面刷新的问题,在控制台上确实能看到,数据刷新了,然后试着打完包之后,确实是会有白屏的问题,且 ...

  5. form表单提交数据(包括文字和图片)实例

    一般来说,form表单提交数据的方式,也就是请求数据到服务器是与传统利用路径api去get或post一个请求到服务器是不一样的,下面就来探讨下关于form表单提交数据至服务器到底是怎么实现的. 话不多 ...

  6. form表单提交后页面404

    <form action="/hello" method="post"> 修改为 <form action="/springmvc_ ...

  7. Python Django 表单类Form(py代码画form表单仅渲染页面)

  8. ajax表单图片,js中使用ajax上传一个带有图片的表单数据

    function save() { var formData = new FormData(); if( $('#file')[0].files.length>0){ formData.appe ...

  9. 【一文学会文件上传】SpringBoot+form表单实现文件上传

    唠嗑部分 平时我们在项目过程中,往往会遇到这种情况,比如:我的用户应该有一个头像,那就涉及到文件上传,那么文件应该如何存储呢? 这就会有很多方式 1.最简单的就是存在服务器上,这就要考虑到服务器的磁盘 ...

最新文章

  1. 人力资源中最常见的7张报表
  2. Layout两列定宽中间自适应三列布局
  3. php中储存数据类型,PHP中的数据类型
  4. 速看,三分钟带你了解IP协议!
  5. Spring注解方式实现定时器
  6. InfluxDB基本使用说明
  7. 主线程 唤醒_python线程之九:生产者消费者3种方式,2个线程1个协程
  8. vue click事件_Vue.js---实现前后端分离架构中前端页面搭建(二)
  9. 【VB.NET】测验题目Quiz4
  10. oracle数据库监听频道异常,数据库监听不定期出现异常故障处理
  11. NNS域名系统之SGAS
  12. 不使用手机代理,进行手机抓包
  13. 【工具篇】---UniWebView插件的使用Unity内部打开Web网页<二>
  14. Node2Vec笔记
  15. python前缀_【python刷题】前缀和
  16. PIL库改变图片大小
  17. cesium天气(晴、雨、雪、雾)
  18. 书籍扫描图像几何畸变校正
  19. java pdf 签名_java – PDFBox 1.8.10:填充和签名PDF生成无效签名
  20. Nvidia Maxine 精讲(一)AR-SDK安装使用——BodyTrack 【非官方全网首发】

热门文章

  1. 业务理解有偏差,产品和开发如何达成共识?
  2. 《伊拉图斯死之主》:硬核游戏也有相对放松的游戏体验
  3. EditThisCookie插件的使用方法
  4. web服务器负载架构
  5. ef AddDays报错
  6. 微信开发接口调用(前端+.net服务端)
  7. mysql备份工具 :mysqldump mydumper Xtrabackup 原理
  8. ecshop 快速添加会员
  9. onkeyup,onkeydown和onkeypress
  10. [每天进步一点 -- 流水账]第1周