java多张图片上传,前后台实现代码

1、页面元素,file设置了multiple,支持多张图片,样式使用bootstrap基础样式,自行引用。

<form id="form1"  method="post"  enctype="multipart/form-data" >
	 	<span>请上传图片:</span>
		<input id="files" name="files" type="file" multiple >
</form>
		   <!-- 工具栏 -->
		   <div id="toolbar" class="btn-group" style="margin-top: 20px">
	            <button id="btn_add" type="button" class="btn btn-default" onclick="savebase()">
	                <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>确定
	            </button>	
	            <button id="btn_add" type="button" class="btn btn-default" onclick="window.history.back(-1) ">
	                <span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span>返回
	            </button>	         
	        </div>

2、js代码提交,前台初步验证图片格式,注意这边加载了jquery-form.js。

<script type='text/javascript' src="<%=basePath%>static/js/jquery-form.js"></script> 
<script type="text/javascript">
function savebase(){     
        var path1 = $("#files").val();
        //alert(path1);
        if (path1.length != 0) {
      		var extStart = path1.lastIndexOf('.'),
                ext = path1.substring(extStart, path1.length).toUpperCase();
            if (ext !== '.PNG' && ext !== '.JPG' && ext !== '.JPEG' && ext !== '.GIF') {
                alert("请上传正确的图片!");
                return false;
            }
        }else{
        	alert("请上传图片!");
                return false;
        }
		 $("#form1").ajaxSubmit({
                url: '<%=basePath%>pic/b',
                beforeSubmit: function () {

                },
                success: function (data) {
                    if(data=='1') {
                        window.location.href="<%=basePath%>/pic/a";
                    }else if(data=='2') {
                        layer.msg('请上传正确的图片!', {
                            icon: 1,//提示的样式
                            time: 2000
                        });
                    }else if(data=='3') {
                        layer.msg('请上传大小不超过20M的图片!', {
                            icon: 1,//提示的样式
                            time: 2000
                        });
                    }else if(data=='4'){
                   		layer.msg('提交失败,请联系管理员', {
                            icon: 1,//提示的样式
                            time: 2000
                        });
                    }
                }
            });
	}	
</script>

3、java后台实现

import java.io.File;
@RequestMapping(value="/b")
	@ResponseBody
	public String b(HttpSession session,
			@RequestParam("files") MultipartFile[] files ,
			HttpServletRequest request,HttpServletResponse response,Model model){
		try{
			Date d = new Date();
			boolean typefile = false;
			boolean sizefile = false;
			for (MultipartFile m : files) {
				String originalFilename = m.getOriginalFilename();
				String string = originalFilename.split("\\.")[1].toUpperCase();
				if(!string.equals("PNG") && !string.equals("JPG") && !string.equals("JPEG") && !string.equals("GIF")){
					typefile = true;
				}
				long size = m.getSize();
				if(size/1024 > 20000){
					sizefile = true;
				}
			}
			if(typefile){//格式不对
				return "2";
			}
			if(sizefile){//大小超限
				return "3";
			}
			for (MultipartFile m : files) {
				Pics pics = new Pics();
				if (!m.isEmpty()) {
					// 获取文件存储路径(绝对路径)
				    String path = session.getServletContext().getRealPath("");
				    // 获取原文件名
				    String fileName = SjtyUtil.getUUid()+"."+m.getOriginalFilename().split("\\.")[1];
				    //自定义保存路径
				    path=path+"/static/beian/";
				    // 创建文件实例
				    File filePath = new File(path, fileName);
				    // 如果文件目录不存在,创建目录
				    if (!filePath.getParentFile().exists()) {
				        filePath.getParentFile().mkdirs();
				        System.out.println("创建目录" + filePath);
				    }
				    // 写入文件
				    m.transferTo(filePath);
				    pics.setPicsrc("/static/beian/"+fileName);
				}
				pics.setId(SjtyUtil.getUUid());
				pics.setPicname(m.getOriginalFilename());
				pics.setCrtdate(d);
				//数据库保存记录
				picDao.savepic(pics);
			}
			return "1";
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return "4";
		}
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值