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

问题描述

我有这个 .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 (将#修改为@)