从POST请求中检索jsp中的文件和参数 [英] Retrieve file and parameters in jsp from POST request

查看:96
本文介绍了从POST请求中检索jsp中的文件和参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在模态中有以下形式:

I have the following form inside a modal:

    <div id="sazModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="sazModalLabel" aria-hidden="true">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="sazModalLabel">Upload a Test</h3>
      </div>
      <div class="modal-body">
       <form method=POST id='sazForm' class="form-horizontal" action="upload.jsp" enctype='multipart/form-data'>
          <div class="control-group">
            <label class="control-label" for="inputEmail">Email</label>
            <div class="controls">
              <input name="email" type="text" id="inputEmail" placeholder="Email">
            </div>
          </div>
          <div class='control-group'>
            <label class='control-label' for='inputHost'>Test Server</label>
            <div class='controls'>
                <input name="hstnme" type='text' id='inputHost' placeholder='Hostname'>
            </div>
          </div>
          <div class='control-group'>
            <label class='control-label' for='inputPort'>Port Number</label>
            <div class='controls'>
                <input name="port" type='text' id='inputPort' placeholder='Port'>
            </div>
          </div>
          <div class="control-group">
            <label class="control-label" for="fileUploadButton">Saz File</label>
            <div class="controls">
              <input name="saz" type="file" id="fileUploadButton" placeholder="Saz File"/>
            </div>
          </div>
          <div id='modalfooter'>
            <input class="btn btn-success" type='submit' id='goButton' value="Go!"/>
            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
            </div>
        </form>
      </div>
    </div>

我想将其发送到以下jsp(upload.jsp):

And I would like to have it send to the following jsp (upload.jsp):

<%@ page import="java.io.*,java.util.*, javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="org.apache.commons.io.output.*"%>

<%
   System.out.println(request.getParameter("hstnme"));

   Enumeration<String> paramNames = request.getParameterNames();

   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      System.out.print(paramName + " : ");
      String paramValue = request.getHeader(paramName);
      System.out.println(paramValue);
   }
%>

我遇到了参数无法正确传递的问题.我的System.out说:

I'm running into the problem that the parameters are not coming over properly. My System.out says:

null

就是这样.显然没有得到其他输入(电子邮件,hstnme和端口).空值来自第一个.getParameter("hstnme")

and that's it. It's clearly not getting the other inputs (email, hstnme, and port). The null comes from the first .getParameter("hstnme")

我认为主机名可能会受到某种方式的保护,因此我将其更改为hstnme,但没有运气.我还注意到,当我使用commons.fileupload时,所有四个参数都放入FileItems中,但它们的值并未一起发送.

I thought that hostname might be protected in some way, so I changed it to hstnme, with no luck. I also notice that when I use the commons.fileupload, all four parameters are made into FileItems, but their values are not sent along.

如何将表单中的参数传递给jsp并正确检索它们?

How do I pass the parameters in my form to the jsp and retrieve them correctly?

推荐答案

我建议您使用servlet来处理帖子,有很多方法可以做到,但是一种简单的方法是使用

I suggest you to use a servlet to handle the post, there is many way of doing it but one easy is to use the Apache Commons FileUpload library. You only need to add the JAR to your project.

这里是一个示例,该示例将获取您的信息并以HTML格式打印内容:

Here is an example that will get your informations and print content in HTML :

@WebServlet(urlPatterns = { "/file-upload" } )
public class FileUpload extends HttpServlet
{
    @Override
    public void doPost(HttpServletRequest p_oRequest, HttpServletResponse p_oResponse) throws IOException
    {
        PrintWriter out = p_oResponse.getWriter();

        out.println("<html><body>");

        List fileItems = null;

        // Parsing field values
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(10000000);

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
        // maximum file size to be uploaded.
        upload.setSizeMax(10000000);

        try
        {
            // Parse the request to get file items.
            fileItems = upload.parseRequest(p_oRequest);

            // Process the uploaded file items
            Iterator i = fileItems.iterator();

            out.println("<table><tr><td>Type</td><td>Name</td><td>Value</td>");

            while(i.hasNext())
            {
                FileItem fi = (FileItem)i.next();

                out.println("<tr>");

                if(fi.isFormField())
                {
                    out.println("<td>Field</td>");
                    out.println("<td>" + fi.getFieldName() + "</td>");
                    out.println("<td>" + fi.getString() + "</td>");
                }
                else
                {
                    out.println("<td>File</td>");
                    out.println("<td>" + fi.getFieldName() + "</td>");
                    out.println("<td>" + fi.getName() + " / " + fi.getContentType() + " / " + fi.getSize() + "</td>");
                }

                out.println("</tr>");
            }

            out.println("</table>");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        out.println("</body></html>");
        out.flush();
    }
}

请注意,FileItem fi是包含字段信息的对象.对于文件,您可以使用fi.getInputStream()fi.getString()来获取其内容,具体取决于您要获取的方式以及多少数据等.

Note the FileItem fi is the object that contains field information. For the file, you can get its content with fi.getInputStream() or fi.getString() depending on how you want to get it and how much data, etc.

这篇关于从POST请求中检索jsp中的文件和参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆