ajax上传文件及servlet接收

ajax上传文件及servlet接收

html

<div class="form-group">
                            <label class="col-sm-2 control-label"><span style="color:red">*</span>附件上传:</label>
                            <div class="col-sm-2">
                            	<span>证件正面</span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label"></label>
                            <div class="col-sm-2">
                            	<input type="file" name="file" id="per_uploadFront"/>
                            </div>
                        </div>

<script type="text/javascript">
	function FromData(){}

            //创建fileLoad方法用来上传文件
            function fileLoad(ele,id,remark){
                  //创建一个formData对象
                var formData = new FormData();
                //获取传入元素的val
                var fileName = $(ele).val();
                  //获取files
                var file = $(ele)[0].files[0];
                //将name 和 files 添加到formData中,键值对形式
                formData.append("file", file);
                formData.append("fileName", fileName);
                formData.append("remark",remark);
                $.ajax({
                    url: "<%=controller.getURI(request, UploadFile.class)%>",
                    type: 'POST',
                    data: formData,
					async: false,  
			        cache: false,  
                    processData: false,// 告诉jQuery不要去处理发送的数据
                    contentType: false, // 告诉jQuery不要去设置Content-Type请求头
//                     beforeSend: function () {
//                        //发送前的动作
//                         alert("还没开始发送呢");
//                     },
                    success: function (responseStr) {
                    	var resData = eval('('+responseStr+')');
                    	if('CG'==resData.code){
                    		alert("上传成功"+resData.info);
                    	}else{
                    		alert("上传失败"+resData.info);
                    	}
                    },
                    error : function (responseStr) {
                        //出错后的动作
                        alert("上传失败");
                    }
                });
            }
            
            window.onload = function(){
            	
                var $per_inputFront =  $("#per_uploadFront");
                //为input设定change事件
                $per_inputFront.change(function () {
                	
                //如果value不为空,调用文件加载方法
                    if($(this).val() != ""){
                        fileLoad(this,'per_frontKey','证件正面');
                    }
                })
            }
      </script>

servlet接收

public class UploadFile extends HttpServlet{

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		PrintWriter out = response.getWriter();  
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
        if(!isMultipart){  
            throw new RuntimeException("请检查您的表单的enctype属性,确定是multipart/form-data");  
        }  
        DiskFileItemFactory dfif = new DiskFileItemFactory();  
        ServletFileUpload parser = new ServletFileUpload(dfif);  
          
        parser.setFileSizeMax(2*1024*1024);//设置单个文件上传的大小  
        parser.setSizeMax(10*1024*1024);//多文件上传时总大小限制  
          
        List<FileItem> items = null;  
        try {  
            items = parser.parseRequest(request);  
        }catch(FileUploadBase.FileSizeLimitExceededException e) {  
            out.write("上传文件超出了2M");  
            return;  
        }catch(FileUploadBase.SizeLimitExceededException e){  
            out.write("总文件超出了10M");  
            return;  
        }catch (FileUploadException e) {  
            e.printStackTrace();  
            throw new RuntimeException("解析上传内容失败,请重新试一下");  
        } 
        
        String fileName = null;
        InputStream inputStream = null;
        StringBuilder remark = new StringBuilder();
        if(items!=null){  
            for(FileItem item:items){  
                if(!item.isFormField()){  
					// 该表单项是file类型的   
                    fileName = item.getName();  
                    inputStream = item.getInputStream();  
                }else {
                	//该表单项是普通类型的
                	String fieldName = item.getFieldName();
                	String fieldValue = item.getString("UTF-8");
                	remark.append(fieldName+":"+fieldValue+",");
                }
            }  
        }  
		Map<String,Object> returnMap = new HashMap<String, Object>();
		/**校验上传文件的大小*/
		int available = inputStream.available();	//文件大小byte
		//1M=1024k=1048576字节 
		if(available > 2*1048576) {		//文件不能大于2M
			returnMap.put("code","SB");
			returnMap.put("info", "文件不能大于2M");
			out.print(new JSONObject(returnMap));
			out.close();
			return;
		}
		returnMap.put("code","CG");
		returnMap.put("info", "上传成功");
		out.print(new JSONObject(returnMap));
		out.close();
		return;
	}

猜你喜欢

转载自blog.csdn.net/xfx_1994/article/details/103164289
今日推荐