Ajax无刷新上传

html如下:

<form>
	<div id="whiteListDiv" style="display: none;margin:-5px auto 10px auto;" class="form-group clearfix">
		<label><font></font></label>
		<input type="file" id="whiteList" name="whiteList" style="height: 24px; width: 500px;" />
		<input type="button" class="btn-t1" onclick="uploadList('white');" value="上传" style="width: 120px; margin-left: 20px;">
	</div>
			
				
	<div class="form-group clearfix">
		<label><font></font>是否有黑名单</label>
		<input type="file" id="blackList" name="blackList" style="height: 24px; width: 500px;" />
		<input type="button" class="btn-t1" onclick="uploadList('black');" value="上传" style="width: 120px; margin-left: 20px;">
	</div>
</form>

注意id和name属性

调用的JS方法:

 function uploadList(type){
    	
    	var fileList;
    	if(type == "white"){
    		fileList = $("#whiteList").val();
    	} else {
    		fileList = $("#blackList").val();
    	}
    	
    	if(fileList == null || fileList == ""){
    		alert("请先选择文件再上传");
    		return;
    	}
    	
    	var suffix = fileList.substring(fileList.lastIndexOf("."));
    	if(suffix != ".csv" && suffix != ".CSV"){
    		alert("请选择csv格式文件");
        	return;
    	}
    	
    	var formData = new FormData($("form")[0]);
    	formData.append("idBombBannerInfo",sid);
    	formData.append("type",type);
    	
    	$.ajax({
    		url : '../../accessManagerment/uploadFileList.do',
    		type : 'POST',
    		data : formData, 
        	// 告诉jQuery不要去处理发送的数据
        	processData : false, 
        	// 告诉jQuery不要去设置Content-Type请求头
        	contentType : false,
        	beforeSend:function(){
	        	//console.log("正在进行,请稍候");
        			},
        	success : function(data) {
		        		if(data.errorMsg != null && data.errorMsg != ""){
	        				alert(data.errorMsg);
	        			} else {
	        				alert(data.resultMsg);
	        			}
        			}, 
        	error : function(responseStr) { 
        				alert("上传名单出现异常");
        			} 
    	});
    	
    }

由于是ajax发起请求,界面不用刷新

后台获取参数

	@RequestMapping("/accessManagerment/uploadFileList.do")
	public void uploadFileList(HttpServletRequest request, HttpServletResponse response,
								@RequestParam(value="whiteList",required=false) MultipartFile whiteList,
								@RequestParam(value="blackList",required=false) MultipartFile blackList,
								@RequestParam(value="idBombBannerInfo",required=false) String idBombBannerInfo,
								@RequestParam(value="type",required=false) String type
								) throws IOException, ParseException, CmsBusinessException, IllegalStateException, ServletException{
		CmsLogger.audit("弾屏广告-上传白名单/黑名单:[type=" + type+"][idBombBannerInfo="+"]");
		Map<String,Object> resultMap  = new HashMap<String,Object>();
		Map<String,Object> paramMap  = new HashMap<String,Object>();
		PrintWriter out = initWriter();
		out = response.getWriter();
		String result = "";
		
		if(!(idBombBannerInfo != null && !idBombBannerInfo.equals("") && type != null && !type.equals(""))){
			result = "{\"errorMsg\": \"上传参数不能为空\"}";
			return;
		}
		
		//获取产品编码
//		DefaultMultipartHttpServletRequest req = (DefaultMultipartHttpServletRequest) request;
//		String productCode = req.getParameter("productCode");
		long www = whiteList.getSize();
		long bbb = blackList.getSize();
		
		MultipartFile fileList = null;
		if(type != null && type.equals("white")){
			fileList = whiteList;
		} else {
			fileList = blackList;
		}
		try{
			if(fileList == null){
				result = "{\"errorMsg\": \"上传文件不能为空\"}";
				return;
			}
			
			//判断上传文件的格式(csv)
			String originalName = fileList.getOriginalFilename();
			String suffix = originalName.substring(originalName.lastIndexOf("."));
			if(!suffix.equalsIgnoreCase(".csv")){
				result = "{\"errorMsg\": \"只能上传csv格式的文件\"}";
				return;
			}
			
			//获取文件内容
			InputStream is = fileList.getInputStream();
			BufferedReader reader = new BufferedReader(new InputStreamReader(is));
//			String phoneStr = "";
//			String tmp = "";
//			int count = 0;		//代表上传的手机号数量
//			while((tmp = reader.readLine()) != null){
//				//仅截取每行的前11位--如果长度够11
//				if(tmp != null && tmp.length() >= 11){
//					//最多传递500个手机号
//					if(count < 500){
//						phoneStr += tmp.substring(0,11) + ",";
//						count++;
//					} else {
//						result = "{\"errorMsg\": \"白名单上传失败 :白名单数量已超过500\"}";
//						return;
//					}
//				}
//			}
//			
//			if(count == 0){
//				result = "{\"errorMsg\": \"上传的白名单为空,请录入白名单重新上传!\"}";
//				return;
//			}
//			
//			if(phoneStr.indexOf(",") > -1){
//				phoneStr = phoneStr.substring(0,phoneStr.length() - 1);
//			}
			
			//下面调用接口直接将手机号一并发送过去
//			String URL = "http://IQSZ-L1470:9091/elis_mili_shop_app/do/app/product/factory/batchSaveUserWhiteList";
			String urlSuffix = cachePropertiesUtils.getPropertyValue("mili_shop.http.app.url");
			String URL = urlSuffix + "/do/app/product/factory/batchSaveUserWhiteList";
			
			NameValuePair[] data = {
//					new NameValuePair("whilteList", phoneStr),
//					new NameValuePair("operator", user.getUserUmNo())
					};
			//调用接口
			resultMap.put("resultCode", "00");
			
			if(resultMap != null && resultMap.get("resultCode").equals("00")){
				//mili-shop新增成功
				/*注意添加产品的时候,也要同时添加产品配置信息*/
				result = "{\"resultMsg\": \"上传成功\"}";
				if(type.equals("white")){
					paramMap.put("isUploadWhitelist", "Y");
				} else {
					paramMap.put("isUploadBlacklist", "Y");
				}
				paramMap.put("sid", idBombBannerInfo);
				
				accessManagermentService.updateBombBannerStatus(paramMap);
				
			} else {
				result = "{\"errorMsg\": \"上传失败 " + resultMap.get("resultMsg") + "\"}";
				CmsLogger.audit("弾屏广告名单上传失败");
			}
			
		} catch(Exception e){
			result = "{\"errorMsg\": \"弾屏广告名单上传失败\"}";
			CmsLogger.error("BombBannerManagementController-->uploadFileList:弾屏广告名单上传失败:" + e.getMessage(), e);
		} finally {
			if (null != out) {
				out.print(result);
				out.flush();
				out.close();
			}
		}
	}

jquery引用正常,请求能正常到后台,应该就可以直接使用了,上传代码是直接可运行的。。。

猜你喜欢

转载自my.oschina.net/u/1474131/blog/1162784