form表单中使用fileUpLoad上传文件
在最近的项目中,需要对用户的头像就行上传。这里了解到使用appche的。大家可自行到mvn库搜索jar包名进行下载。
这里需要注意的是代码中对参数的读取。正常情况下我么使用getparameter方法进行读取表单数据,但是因为在form中我们必须设置enctype=“multipart/form-data”,故在进行表单的读取时要进行判断是否为multipart类型。
具体代码类似如下:
boolean isMultipart = ServletFileUpload.isMultipartContent(request); System.out.println("isMultipart "+isMultipart); try { String teaName=""; String teaCardid=""; String teaSex=""; String[] teaHobby=new String[3]; String hobby=""; int count=0; String teaType=""; Date teaDate=null; String teaEmail=""; String teaPhone=""; Blob teaPic=null; if(isMultipart ) { FileItemFactory factory =new DiskFileItemFactory(); ServletFileUpload upload=new ServletFileUpload(factory); //获取前台输入的数据,保存在items中 upload.setHeaderEncoding("utf-8"); List<FileItem> items = upload.parseRequest(request); //遍历items中的数据 Iterator<FileItem> iter = items.iterator(); while(iter.hasNext()) { FileItem item = iter.next(); String itemName=item.getFieldName();//获取itemname //判断前端字段是普通表单字段还是文件字段 if(item.isFormField()) {//是普通表单字段 if(itemName.equals("tea_name")) {//根据name判断 teaName=item.getString("utf-8"); System.out.println("teaName ---"+teaName); }else if(itemName.equals("tea_cardid")) { teaCardid=item.getString("utf-8"); System.out.println("teaCardid---"+teaCardid); }else if(itemName.equals("tea_sex")) { teaSex=item.getString("utf-8"); System.out.println("teaSex---"+teaSex); }else if(itemName.equals("tea_hobby")) { String teaHobbys=item.getString("utf-8"); System.out.println("teaHobby"+count+"----"+teaHobbys); teaHobby[count]=teaHobbys; hobby = teaHobby.toString(); System.out.println(hobby); count++; }else if(itemName.equals("tea_date")) { String date=item.getString("utf-8"); System.out.println("date---"+date); SimpleDateFormat format=new SimpleDateFormat("yyyy-mm-dd"); teaDate=format.parse(date); System.out.println("teaDate----"+teaDate); }else if(itemName.equals("tea_type")) { teaType=item.getString("utf-8"); System.out.println("teaType---"+teaType); }else if(itemName.equals("tea_phone")) { teaPhone=item.getString("utf-8"); System.out.println("teaPhone---"+teaPhone); }else if(itemName.equals("tea_email")) { teaEmail=item.getString("utf-8"); System.out.println("teaEmail----"+teaEmail); } }else {//获取文件 String fileName=item.getName();//获取文件的名,区别于getfieldname System.out.println(fileName); String file=fileName.substring(fileName.indexOf(".")+1); System.out.println(file); if(!(".jpg".equals(file)||".png".equals(file)||".jpeg".equals(file)||".gif".equals(file))) { return; }else { item.write();//此处类似流的操作,我是将其转换为Blob类型进行数据库的存储就,建议大家在数据库中存路径,一是读取方便快捷,二是代码也会简单 } } }