request.getParameter("key")拿不到值的问题

今天在写一个form表单的时候,提交到后台之后发现使用request.getParameter()拿到的值全部为null

错误原因是这个form表单中有一个文件(图片)上传的项,form表单中有一个属性enctype="multipart/form-data"。

<form name="articleform" class="form-horizontal" action="${pageContext.request.contextPath}/list?method=updateArticle"
                  method="post" enctype="multipart/form-data">

查了一下这个属性

此时用request是拿不到这个值的,因为这个表单是基于流的方式提交的。

此时需要导入下面三个依赖,此处我使用的maven方式引入

<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.2</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.8.0</version>
    </dependency>

具体的实现方式如下

private void updateArticle() throws ServletException, IOException{
        Article article = new Article();
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List items = null;
        try {
            items = upload.parseRequest(request);
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        Iterator iter = items.iterator();
        String picUrl = null;
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();
            if(item.isFormField()){//判断是非文件上传
                String value = item.getString("UTF-8");
                //分枝结构匹配上传项
                switch (item.getFieldName()) {
                    case "id":
                        String id = value;
                        article.setId(Integer.parseInt(id));
                        break;
                    case "picUrl":
                        picUrl = value;
                        article.setImage(picUrl);
                        break;
                    case "code":
                        String code = value;
                        ArticleType type = new ArticleType();
                        type.setCode(code);
                        article.setArticleType(type);
                        break;
                    case "titleStr":
                        String title = value;
                        article.setTitle(title);
                        break;
                    case "supplier":
                        String supplier = value;
                        article.setSupplier(supplier);
                        break;
                    case "locality":
                        String locality = value;
                        article.setLocality(locality);
                        break;
                    case "price":
                        String price = value;
                        article.setPrice(Double.parseDouble(price));
                        break;
                    case "storage":
                        String storage = value;
                        article.setStorage(Integer.parseInt(storage));
                        break;
                    case "description":
                        String description = value;
                        article.setDescription(description);
                        break;
                }
            }else{
                //得到文件保存路径
                String sysPath = request.getServletContext().getRealPath("/resources/images/article/");
                //得到上传问价的文件名  test.jpg
                String filename = item.getName();
                if (null == filename || filename == "") {
                    filename = picUrl;
                }
                sysPath = sysPath + filename;
                article.setImage(filename);
                File saveFile = new File(sysPath);
                try {
                    item.write(saveFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        shopService.updateArticle(article);
        request.setAttribute("tip","修改商品成功");
        showUpdate();
    }

这样就可以拿到form表单上传的数据了,并且完成上传文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值