java - Servlet中无法获取参数

标签 java jsp servlets upload

我想上传多个文件到服务器并在JSP页面中获取参数“testname”。但它总是返回一个空值。 我找到了错误的原因。因为“enctype =“multipart/form-data””。如果我从表单中删除它,我可以获得一个参数,但无法将多个文件上传到服务器。我怎样才能同时完成这两个任务?

lib: http://www.java2s.com/Code/Jar/c/Downloadcosmultipartjar.htm

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="UploadServlet" method="post" enctype="multipart/form-data">
            <input name="testname" type="text">
            <input type="file" id="file" name="file1" accept="image/*"  multiple="muliple" required/><br>
            <input type="submit"/>
           <br><br> ${requestScope.message}
        </form>
    </body>
</html>

UploadServlet.java

package MyPackage;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import javax.servlet.*;
import javax.servlet.http.*;
import com.oreilly.servlet.multipart.MultipartParser;
import com.oreilly.servlet.multipart.Part;
import com.oreilly.servlet.multipart.FilePart;
/**
 * Servlet implementation class UploadServlet
 */
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
    private String fileSavePath;
    private static final String UPLOAD_DIRECTORY = "Upload";

    public void init() {
        fileSavePath = getServletContext().getRealPath("/") + File.separator + UPLOAD_DIRECTORY;/*save uploaded files to a 'Upload' directory in the web app*/
        if (!(new File(fileSavePath)).exists()) {
            (new File(fileSavePath)).mkdir();    // creates the directory if it does not exist        
        }
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
        String testname=request.getParameter("testname");
        System.out.print(testname);
        String resp = "";
        int i = 1;
        resp += "<br>Here is information about uploaded files.<br>";
        try {
            MultipartParser parser = new MultipartParser(request, 1024 * 1024 * 1024);  /* file limit size of 1GB*/
            Part _part;
            while ((_part = parser.readNextPart()) != null) {
                if (_part.isFile()) {
                    FilePart fPart = (FilePart) _part;  // get some info about the file
                    String name = fPart.getFileName();
                    if (name != null) {
                        long fileSize = fPart.writeTo(new File(fileSavePath));
                        resp += i++ + ". " + fPart.getFilePath() + "[" + fileSize / 1024 + " KB]<br>";
                    } else {
                        resp = "<br>The user did not upload a file for this part.";
                    }
                }
            }// end while 
        } catch (java.io.IOException ioe) {
            resp = ioe.getMessage();
        }
        request.setAttribute("message", resp);
        getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
    }

}

最佳答案

使用enctype="multipart/form-data"时,您将无法通过调用request.getParameter()获取参数。这些参数现在是流的一部分。

我建议你检查问题How to upload files to server using JSP/Servlet?

关于java - Servlet中无法获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34018623/

相关文章:

java - 我是 Selenium 新手,但为什么 Maven 会跳过我的测试并告诉我构建成功?

java - 如何用Java设计游戏界面

java - 在 JSP 中获取返回值

java - 有没有办法告诉 servlet 容器一次生成一个资源实例?

java - JSP 链接到不同文件夹中的另一个 JSP 文件

java - 有没有添加多个项目的捷径

java - 从其他类更改 JFrame 的标题

java - 如何在Java中以最佳性能解析.STL文件?

java - 传递JSP参数,然后检查它们是否存在

java - Struts Action 中的多个入口点(迁移 Struts 2.2.3 -> 2.3.1)