JavaWeb servlet文件上传

该博客介绍了如何使用Java Servlet和ServletFileUpload库处理multipart/form-data类型的表单数据,实现文件上传功能。文章详细讲解了从判断请求类型、创建FileItemFactory和ServletFileUpload实例,到解析请求、写入文件以及处理普通字段的步骤。示例代码展示了如何将上传的文件保存到服务器的指定路径,并将文件名和其他表单字段的值存储到HashMap中。

servlet

 HashMap map=new HashMap();
            //上传
            boolean isMultipart= ServletFileUpload.isMultipartContent(req);
            if (isMultipart){//判断前台的from是否有multipart属性
                FileItemFactory factory=new DiskFileItemFactory();
                ServletFileUpload upload=new ServletFileUpload(factory);
                try {
                    //通过parseRequest解析from中的所有请求字段,并保存到items集合中(即前台传递的file就保存在了items)
                    List<FileItem> items= upload.parseRequest(req);
                    Iterator<FileItem> iter= items.iterator();
                    while (iter.hasNext()){
                        FileItem item= iter.next();
                        //判断是表单字段还是文件字段
                        if (!item.isFormField()){
                            //文件上传
	           //文件名
  	           String fieldName = item.getFieldName();
                            //文件名getName() 获取文件字段的值
                            String fileName= item.getName();
                          
                            map.put(fieldName,fileName);
                            //文件的内容,并上传
                            //定义文件路径,指定上传的位置(服务器路径)
                            String upload1 = req.getServletContext().getRealPath("upload");
                            String[] outs = upload1.split("out");
                            String homePath=outs[0]+"web\\img\\upload";
                            File file1=new File(homePath,fileName);
                            item.write(file1);//上传
                        }else {
	            //普通字段
                            String fieldName = item.getFieldName();
                            String val = item.getString("utf-8");
                            map.put(fieldName,val);
                        }
                    }
                } catch (FileUploadException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

Html

<form method="post" action="" enctype="multipart/form-data">
	<input type="file" name="fileImg">
	<input type="text" name="username">
</form>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值