在最近的项目中,需要对用户的头像就行上传。这里了解到使用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类型进行数据库的存储就,建议大家在数据库中存路径,一是读取方便快捷,二是代码也会简单
}
}
}