form表单中使用fileUpLoad上传文件

本文介绍了在Java Web项目中如何使用ServletFileUpload组件处理form表单的multipart/form-data类型的文件上传,包括读取普通表单字段和文件字段的方法,并强调了文件类型的检查和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值