java获取APP接口表单提交的数据(jfinal)

@Before(Tx.class)//jfinal的事物注解
public void saveTeachingResearch() {
		Integer status = null;
		String result = null;
		Integer activityId = null;
		String activity_name = null;// 活动名称
		String begin_time = null;// 开始时间
		String end_time = null;// 结束时间
		String activity_add = null;// 活动地址
		String activity_add_code = null;// 活动行政区划
		String activity_stages = null;// 学段
		String activity_grade = null;// 学年
		Integer activity_subject = null;// 学科
		Integer hours = null;// 学时
		String comment = null; // 说明

		// 创建一个临时文件存放要上传的文件,第一个参数为上传文件大小,第二个参数为存放的临时目录
		String tempPath = getRequest().getSession().getServletContext().getRealPath("/upload/temp");
		DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024 * 5, new File(tempPath));
		// 设置缓冲区大小为 5M
		factory.setSizeThreshold(1024 * 1024 * 5);
		// 创建一个文件上传的句柄
		ServletFileUpload upload = new ServletFileUpload(factory);
		// 设置上传文件的整个大小和上传的单个文件大小
		upload.setSizeMax(1024 * 1024 * 50);
		upload.setFileSizeMax(1024 * 1024 * 5);
		try { // 把页面表单中的每一个表单元素解析成一个FileItem
			StringBuilder img_urls = new StringBuilder();//图片路径字符串数组
			List<FileItem> items = upload.parseRequest(getRequest());
			for (FileItem fileItem : items) {
				// 如果是一个普通的表单元素(type不是file的表单元素)
				if (fileItem.isFormField()) {
					// 得到表单元素的名字
					if (fileItem.getFieldName().equals("activityId")) {
						// 得到表单元素的值
						activityId = Integer.valueOf(fileItem.getString());
					}
					if (fileItem.getFieldName().equals("activity_name")) {
						activity_name = base64Decode(fileItem.getString());//这里加密是因为ios传输的中文字符串为乱码,所以约定他传参前base64加密,接受参数一方解密
					}
					if (fileItem.getFieldName().equals("begin_time")) {
						begin_time = fileItem.getString();
					}
					if (fileItem.getFieldName().equals("end_time")) {
						end_time = fileItem.getString();
					}
					if (fileItem.getFieldName().equals("activity_add")) {
						activity_add = base64Decode(fileItem.getString());
					}
					if (fileItem.getFieldName().equals("activity_add_code")) {
						activity_add_code = fileItem.getString();
					}
					if (fileItem.getFieldName().equals("activity_stages")) {
						activity_stages = fileItem.getString();
					}
					if (fileItem.getFieldName().equals("activity_grade")) {
						activity_grade = base64Decode(fileItem.getString());
					}
					if (fileItem.getFieldName().equals("activity_subject")) {
						activity_subject = Integer.valueOf(fileItem.getString());
					}
					if (fileItem.getFieldName().equals("hours")) {
						hours = Integer.valueOf(fileItem.getString());
					}
					if (fileItem.getFieldName().equals("comment")) {
						comment = base64Decode(fileItem.getString());
					}
				} else {
					// 得到文件的名字
					String fileName = fileItem.getName();
					// 将文件上传到项目的upload/mobile/img/目录并命名,getRealPath可以得到该web项目下包含/upload/mobile/img/的绝对路径
					String path = getRequest().getSession().getServletContext().getRealPath("/upload/mobile/img");
					File saveFile = new File(path);
					// 判断目录是否存在
					if (!saveFile.exists()) {
						// 创建图片存放目录
						saveFile.mkdirs();
					}
					String saveFileName = UUID.randomUUID().toString().replace("-", "").toUpperCase() + ".png";
					try {
						if (activityId > 0) {
							// 先删除掉数据库记录的图片,再保存新图片
							String imgPath = TeachingResearch.dao.findById(activityId).getStr("img_urls");
							if (imgPath != null && imgPath.length() > 0) {
								String[] imgArray = imgPath.split(",");
								if (imgArray != null && imgArray.length > 0) {
									for (String imgpath : imgArray) {
										File file = new File(path + "/" + imgpath.substring(30));
										// 路径为文件且不为空则进行删除
										if (file.isFile() && file.exists()) {
											file.delete();
										}
									}
								}
							}
						}
						// 将新图片写入指定目录
						fileItem.write(new File(path + "/" + saveFileName));
					} catch (Exception e) {
						e.printStackTrace();
						status = 1;
						result = "保存失败!";
					}
					img_urls.append("/gyeducation/upload/mobile/img/" + saveFileName);
					img_urls.append(",");
				}
			}
			// 去除最后一个逗号
			if (img_urls != null && img_urls.length() > 0) {
			        img_urls.deleteCharAt(img_urls.length() - 1);
			}
			TeachingResearch research = null;
			if (activityId == 0) {
				research = new TeachingResearch();
				research.set("activity_name", activity_name);
				research.set("begin_time", begin_time);
				research.set("end_time", end_time);
				research.set("activity_add", activity_add);
				research.set("activity_add_code", activity_add_code);
				research.set("activity_stages", activity_stages);
				research.set("activity_grade", activity_grade);
				research.set("activity_subject", activity_subject);
				research.set("state", 0);
				research.set("comment", comment);
				research.set("img_urls", img_urls.toString());
				research.set("is_signout", 0);
				research.set("hours", hours);
				research.set("rec_time", new Date());
				research.set("rec_person", getCurrentMember().getID());
				research.set("is_del", 0);// 未删除
				research.save();
			} else {
				research = TeachingResearch.dao.findById(activityId);
				research.set("activity_name", activity_name);
				research.set("begin_time", begin_time);
				research.set("end_time", end_time);
				research.set("activity_add", activity_add);
				research.set("activity_add_code", activity_add_code);
				research.set("activity_stages", activity_stages);
				research.set("activity_grade", activity_grade);
				research.set("activity_subject", activity_subject);
				research.set("state", 0);
				research.set("comment", comment);
				research.set("img_urls", img_urls.toString());
				research.set("is_signout", 0);
				research.set("hours", hours);
				research.set("rec_time", new Date());
				research.set("rec_person", getCurrentMember().getID());
				research.update();
			}
			status = 0;
			result = "保存成功!";
		} catch (FileUploadBase.SizeLimitExceededException e) {
			status = 1;
			result = "整个请求的大小超过了规定的大小...";
		} catch (FileUploadBase.FileSizeLimitExceededException e) {
			status = 1;
			result = "请求中一个上传文件的大小超过了规定的大小...";
		} catch (FileUploadException e) {
			e.printStackTrace();
			status = 1;
			result = "保存失败!";
		}
		setAttr("status", status);// 设置返回状态码
		setAttr("result", result);// 设置返回信息
		returnJson();
}
  /**
	 * Base64解密
	 * 
	 * @param s
	 * @return
	 */
	public static String base64Decode(String s) {
		byte[] b = null;
		String result = null;
		if (s != null) {
			BASE64Decoder decoder = new BASE64Decoder();
			try {
				b = decoder.decodeBuffer(s);
				result = new String(b, "utf-8");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return result;
	}


猜你喜欢

转载自blog.csdn.net/peter_qyq/article/details/79108128