javaWeb多文件上传/显示

1.JSP

<!-- Modal -->
		<div class="modal fade" id="myProblem" tabindex="-1" role="dialog"
			aria-labelledby="myModalLabel" aria-hidden="true"
			style="padding-top: 8%">
			<div class="modal-dialog" style="width: 50%">
				<div class="modal-content">
					<div class="modal-header">
						<button type="button" class="close" data-dismiss="modal"
							aria-hidden="true">×</button>
						<h4 class="modal-title">新建问题</h4>
					</div>
					<div class="modal-body">
						<form action="#" class="form-horizontal " id="formdata"
							method="post" enctype="multipart/form-data">
							<div class="form-group">
								<label class="control-label col-md-3">跟踪:</label>
								<div class="col-md-2">
									<select class="form-control" id="tail" name="tail">
										<option>需求</option>
										<option>任务</option>
									</select>
								</div>
							</div>

							<div class="form-group">
								<label class="control-label col-md-3">主题:</label>
								<div class="col-md-7 col-xs-11">
									<input class="form-control" type="text" id="theme" name="theme">
								</div>
							</div>

							<div class="form-group">
								<label class="col-sm-3 control-label">描述:</label>
								<div class="col-md-7 col-xs-11">
									<textarea rows="6" class="form-control" id="describle"
										name="describle"></textarea>
								</div>
								<input style="margin-left: 27%" id="file" type="file"
									name="multipleFileUpload" multiple />
							</div>

							<div class="form-group">
								<label class="control-label col-md-3">优先级:</label>
								<div class="col-md-2">
									<select class="form-control" id="priority">
										<option>紧急</option>
										<option>一般</option>
									</select>
								</div>
								<label class="control-label col-md-2">计划完成日期:</label>
								<div class="col-md-3 col-xs-11">
									<div class='input-group date' id='datetimepicker2'>
										<input type='text' name="ttime" class="form-control" /> <span
											class="input-group-addon"> <span
											class="glyphicon glyphicon-calendar"></span>
										</span>
									</div>
								</div>
							</div>
							<div class="form-group">
								<label class="control-label col-md-3">指派给:</label>
								<div class="col-md-2">
									<select class="form-control" id="user">
										<c:forEach items="${users}" var="user">
											<option>${user.username}</option>
										</c:forEach>
									</select>
								</div>
								<label class="control-label col-md-2">网站:</label>
								<div class="col-md-3 col-xs-11">
									<select class="form-control" id="netname">

										<c:forEach items="${netNames}" var="netName">
											<option>${netName.nename}</option>
										</c:forEach>
									</select>
								</div>
							</div>
						</form>
					</div>

					<div class="modal-footer">
						<button class="btn btn-success" type="button" id="addProblem">提交</button>
						<button data-dismiss="modal" class="btn btn-default" type="button">取消</button>
					</div>
				</div>
			</div>
		</div>
		<!-- modal -->

2.JS

$("#addProblem").click(function() {
			$("#myProblem").modal('hide');
			var iden=1;
			/* var fileName = $('#file').val().split('\\'); //得到文件名数组 */
		    var files =  document.getElementById('file').files; //获得文件大小;
		    if(files.length>0){
		    for(var i=0;i<files.length;i++){
		    	filePath = files[i].name.split('.');		    	
			    fileType =  filePath[filePath.length-1];
			    console.log(fileType);
			    if(!(fileType == "png" || fileType == "jpg" || fileType == "xlsx"|| fileType == "docx"|| fileType == "rar" || fileType == "zip" )){
			    	alert('文件格式不符合要求!');
			    	iden=0;
			    	break
			    }else if(files[i].size>10485760){
			    	alert('错误!请上传不超过10M的文件');
			        iden=0;
			        break
			    }else{
			    	iden=1;
			    }
		    }
		    }
		    
		    if(iden==1){
		    var formData = new FormData($("#formdata")[0]);
			formData.append("tail", $("#tail option:selected").text());
			formData.append("priority", $("#priority option:selected").text());
			formData.append("user", $("#user option:selected").text());
			formData.append("netname", $("#netname option:selected").text());
			formData.append("operator", $("#username").text());
			formData.append("user", $("#user option:selected").text());
			$.ajax({
				url : "${ctx}/addProblem",
				type : "POST",
				data : formData,
				async : false,
				cache : false,
				contentType : false,
				processData : false,
				success : function(returndata) {
					var re = JSON.parse(returndata);
					$("#msg").html(re);
					$("#publicModel").modal('show');
					setTimeout("hide()", 1000);
					to_page(1);
				},
				error : function(returndata) {
					var re = JSON.parse(returndata);
					$("#msg").html(re);
					$("#publicModel").modal('show');
					setTimeout("hide()", 1000);
					to_page(1);
				}
			});
		    } 
		});

3.controller接收

@RequestMapping("/addProblem")
	@ResponseBody
	public String addProblem(HttpServletRequest request) throws Exception{
		String describle=  request.getParameter("describle");
		String tail=  request.getParameter("tail");
		String theme=  request.getParameter("theme");
		String priority=  request.getParameter("priority");
		String processor=  request.getParameter("user");
		String netname=  request.getParameter("netname");
		String ttime=  request.getParameter("ttime");
		String operator=  request.getParameter("operator");
			//使用springmvc提供的方法来处理文件
			//初始化解析器
			CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
			String path ="";
			String fileName ="";
			//判断request中是否有multipartResolver类型数据,有就表示有文件类型
			if(multipartResolver.isMultipart(request)){
				MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
				
				//获得文件名,这里是迭代器封装
				Iterator iter = multiRequest.getFileNames();
				while(iter.hasNext()){
					//这是前台name字段的名字,比如这里是filename
					String filename = (String) iter.next();
					String filename1="";
					//根据name字段来获得MultipartFile
				//	MultipartFile file1 = multiRequest.getFile(filename);单个文件
					List<MultipartFile> files = new LinkedList<MultipartFile>();    
			        files =multiRequest.getFiles(filename);  
			        System.out.println(files);
			        for (MultipartFile file : files) {  
			            if (file != null) {  
			            	if (file.getOriginalFilename()==null||file.getOriginalFilename().equals("")) {
								
							}else{
								filename1 = new Date().getTime()+file.getOriginalFilename();
								 path ="D:\\EclipseProject\\webapp\\File\\"+filename1;
								//注意:文件要保存在项目文件webapp下面
								
								File localFile = new File(path);						
								//Springmvc 提供的写文件方法
								file.transferTo(localFile);
							}
			              
			            }  
			            fileName+=filename1+";";
			        }  
					
				}
				
			}
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			userService.selectUserEntityByUsername(processor);
			Problem problem = new Problem(tail, "新问题", theme, describle, fileName, priority,df.format(new Date()),ttime, null, processor, netname,operator);
		
			boolean result =problemService.insert(problem);
			return result?"提交成功":"提交失败";
			
		}

4.页面显示文件

<c:choose>
    <c:when test="${problem.path== '' }">

    </c:when>
    <c:otherwise>
        <%-- <a href="${ctx}/File/${problem.path}" download=""><i
            class="fa fa-paperclip"></i>${problem.path}</a> --%>

     ${problem.path} 多个文件的名称字符串

        <c:if test="${not empty problem.path}">
            <c:set value="${fn:split(problem.path,';')}" var="paths" />
            <p style="text-align: left;">
                <c:forEach items="${paths}" var="path">
                    <div><a href="${ctx}/File/${path}" download=""  style="color:grey;text-decoration:blink"><i
                      class="fa fa-paperclip"></i>${path}</a></div>
                </c:forEach>
            </p>
        </c:if>
    </c:otherwise>
</c:choose>    注意:这里要在JSP最上面加上
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值