11

我有一个表格。它有文件上传部分以及几个输入字段。我正在使用request.getParameter() 将值从 jsp 获取到 servlet。但是当我添加时encrypt=multipart,request.get 参数不起作用。它返回空值。我知道 multipart 不支持request.getParameter(). 有没有上传文件的解决方案。我也想使用 request.get 参数。

4

4 回答 4

9

apache commons library 将对此类要求很有用。

参考:http: //javakart.blogspot.in/2012/11/file-upload-example-using-servlet.html http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm

boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
//this will help you identify request is of type multipart or not.

检查后,解析请求并使用库获取表单字段和文件项。

例子:

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
                String fieldname = item.getFieldName();
                String fieldvalue = item.getString();
                // ... (do your job here)
            } else {
                // Process form file field (input type="file").
                String fieldname = item.getFieldName();
                String filename = FilenameUtils.getName(item.getName());
                InputStream filecontent = item.getInputStream();
                // ... (do your job here)
            }
        }
于 2013-07-30T04:27:42.087 回答
3

用 注释您的 servlet @MultipartConfig,然后使用该getParts()方法访问这些部分。您使用的是 Servlet 3.0,对吗?

于 2013-07-30T05:17:16.477 回答
3

request.getParameter()及其相关方法不适用于多部分请求,在处理多部分表单数据时总是返回null。

如果你想使用,request.getParameter()那么你可以使用commons FileUpload

于 2013-07-30T04:10:48.230 回答
1

当您使用 multipart 时,您的表单字段将包含在请求流中。所以你必须检查它们是否是表单字段。 请看这个答案。

于 2013-07-30T04:22:25.623 回答