【java】enctype=“multipart/form-data“的form表单无法得到request.getParameter()的值的解决办法

当使用enctype='multipart/form-data'的表单上传文件时,request.getParameter()无法获取表单数据。需通过上传组件的Request类获取二进制数据,并通过遍历item对象逐一处理,解决乱码问题。
摘要由CSDN通过智能技术生成

〇、前情提要

上传文件使用了enctype="multipart/form-data"的,但servlet里面用request.getParameter()方法无论如何都只能获得null值。

enctype="multipart/form-data"类型的表单提交的值是不可以直接用JSP的内置对象request对象取值的,因为这是二进制数据,必须使用上传组件附带的Request类,比如(SmartUpload里面的Request类),所以要保存上传文件的其它信息,就要取得上传组件的Request类对象就可以了…取值方法还是:request.getParameter(“name”);

参考:
网上随便找的UploadHandleServlet,忘了网址是什么,下面有附。


一、分析

一个form表单传空文件

在这里插入图片描述
写一个普通的UploadHandleServlet


public class UploadHandleServlet extends HttpServlet {
   

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
   
                //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
                String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
                File file = new File(savePath);
                //判断上传文件的保存目录是否存在
                if (!file.exists() && !file.isDirectory()) {
   
                    System.out.println(savePath+"目录不存在,需要创建");
                    //创建目录
                    file.mkdir();
                }
                //消息提示
                String message = "";
                try{
   
                    //使用Apache文件上传组件处理文件上传步骤:
                    //1、创建一个DiskFileItemFactory工厂
                    DiskFileItemFactory factory = new DiskFileItemFactory();
                    //2、创建一个文件上传解析器
                    ServletFileUpload upload = new ServletFileUpload(factory);
                     
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值