微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取多部分表单数据的参数

如何解决获取多部分表单数据的参数

我有这个 .JSP 页面如下:

<form action="/email/save.do"  method="post" enctype="multipart/form-data">

<div class="form-group"align="right">
    <label for="subject" >: subject</label>
    <input type="text" class="form-control" name="subject" id="subject">
</div>

<div class="form-group" align="right">
    <label for="uploadFile">: upload file </label>
    <input type="file" class="form-control " name="uploadFile" id="uploadFile">
</div>

<button type="submit" class="btn btn-success btn-block" name="submit">save 

</button>
</form>  

正如你所看到的,我有一个输入是文件类型,还有一些其他输入,它们的类型不是文件

我有一个上传配置类:

UploaderUtiles{

private UploadBean upBean;
private MultipartFormDataRequest mrequest;
private String fileName;
private String fileSize;
private String infilename;

public UploaderUtils(HttpServletRequest request,String param_name,String store_address,long max_byte_size,boolean over_write_status)
        throws Exception {
    this.infilename = param_name;
    this.upBean = new UploadBean();
    upBean.setFolderstore(store_address);
    upBean.setFilesizelimit(max_byte_size);
    upBean.setoverwrite(over_write_status);

    if (MultipartFormDataRequest.isMultipartFormData(request)) {
        mrequest = new MultipartFormDataRequest(request);

        Hashtable files = mrequest.getFiles();

        if ((files != null) && (!files.isEmpty())) {
            UploadFile file = (UploadFile) files.get(param_name);
            this.fileName = file.getFileName();
            this.fileSize = file.getFileSize() + "";
        }
    }
}

public boolean save() throws Exception {
    try {
        upBean.store(mrequest,infilename);
        return true;
    } catch (Exception e) {
        return false;
    }
}

public String getFileName() {
    return fileName;
}

public String getFileSize() {
    return fileSize;}
}  

这是我用于此表单的 Servlet :

@WebServlet("/email/save.do")

public class EmailSave extends HttpServlet {
   @Override
   protected void service(HttpServletRequest req,HttpServletResponse resp) throws servletexception,IOException {
    Email email = new Email();
    try {
        UploaderUtils uploader = new UploaderUtils(req,"uploadFile","C:\\ROOT\\UPLOAD",10000000l,false);
        uploader.save();
        email.setFileAddress("C:\\ROOT\\UPLOAD\\" + uploader.getFileName());
    } catch (Exception e) {
        e.printstacktrace();
    }
    email.setDateTime(new Timestamp(System.currentTimeMillis()));

    email.setSubject(req.getParameter("subject"));

    try {
        EmailService.getInstance().save(email);
    } catch (Exception e) {
        e.printstacktrace();
    }
}

首先我可以将上传文件保存在提到的目录中,到目前为止一切顺利。

主要问题是我无法通过 req.getparameter() 类中的 EmailSave 方法获取由 Form 传递的任何其他参数。我实际上有它们,但值为空。

我尝试了很多解决方案,但都没有奏效。其中一个解决方案提到您可以使用 multiparser 而不是 multiRequest,但我不知道该怎么做,如果这是答案,请解释如何做到这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。