【问题标题】:Passing text data to a jsp page, with multipart data将文本数据传递到 jsp 页面,包含多部分数据
【发布时间】:2016-12-21 18:54:14
【问题描述】:

我需要将文本字段与图像一起传递到 jsp 页面,然后在 jsp 中我想检索文本字段值。 我能够在 jsp 中获取文件并对其执行所需的功能,但我无法获取文本字段值。

request.getParameter(); 函数返回 null,在这种情况下,我搜索了 stackoverflow 上的所有问题,这不是重复的问题,请提供一个 sol。 :) 谢谢。
这是 HTML 文件:

<form name="upload" action="upload.jsp" method="post" enctype="multipart/form-data"> <input type="text" name="pro_sp" placeholder="product selling price"></p> <input type="file" name="img">
<input type="submit" name="upload"></form>

这是 JSP 文件:

<%@page import="javax.servlet.annotation.MultipartConfig"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ 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.*" %>
<% String x=request.getParameter("pro_desc");
out.print(x);
File file ;
int maxFileSize = 5000 * 1024;
int maxMemSize = 5000 * 1024;
ServletContext context = pageContext.getServletContext();
String filePath = "F:/img/";
String fname="";
String contentType = request.getContentType();
if((contentType.indexOf("multipart/form-data") >= 0)) 
{

  DiskFileItemFactory factory = new DiskFileItemFactory();
  // maximum size that will be stored in memory
  factory.setSizeThreshold(maxMemSize);
  // Location to save data that is larger than maxMemSize.
  factory.setRepository(new File("c:\\temp"));

  // Create a new file upload handler
  ServletFileUpload upload = new ServletFileUpload(factory);
  // maximum file size to be uploaded.
  upload.setSizeMax( maxFileSize );
  try
  { 
     // Parse the request to get file items.
     List fileItems = upload.parseRequest(request);

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

     out.println("<html>");
     out.println("<head>");
     out.println("<title>JSP File upload</title>");  
     out.println("</head>");
     out.println("<body>");
     while ( i.hasNext () ) 
     {

        FileItem fi = (FileItem)i.next();
        if ( !fi.isFormField () )   
        {
        // Get the uploaded file parameters
        String fieldName = fi.getFieldName();
        String fileName = fi.getName();
        boolean isInMemory = fi.isInMemory();
        long sizeInBytes = fi.getSize();

        // Write the file
        if( fileName.lastIndexOf("\\") >= 0 )
        {
        file = new File( filePath + 
        fileName.substring( fileName.lastIndexOf("\\"))) ;
        }
else
        {
        file = new File( filePath + 
        fileName.substring(fileName.lastIndexOf("\\")+1)) ;
        }
       fi.write( file ) ;
       fname=(filePath + fileName);
       out.println("Uploaded Filename: " + fname + "<br> |" );

        }

     }      
       out.println("</body>");
     out.println("</html>");
  }
  catch(Exception ex) {
     System.out.println(ex);
  }
}
else
{    
out.println("    <html>");
out.println("    <head>");
out.println("    <title> Servlet upload    </title>");
out.println("    </head>");
out.println("    <body>");
out.println("    <p>No file uploaded    </p>");
out.println("    </body>");
out.println("    </html>");
}

这是输出:null 上传文件名:F:/img/Chrysanthemum.jpg

【问题讨论】:

  • 你能贴出你的代码吗?
  • 我们猜不出问题出在哪里。我们需要看一些代码!!
  • @Susannah Potts 这是代码:)

标签: java html jsp servlets multipartform-data


【解决方案1】:

看到这个问题:Servlet get parameter from multipart form in tomcat 7

在使用enctype="multipart/form-data" 时,必须以不同方式处理纯表单参数。此问题的最佳答案中的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多