How to catch parameter in form with enctype="multipart / form-data"?

1

I'm having trouble catching the parameters of an HTML form with enctype="multipart / form-data", I can upload an image through the form, but I can not capture text typed in the form.

The form looks like this:

<form method="post" action="UploadServlet" enctype="multipart/form-data">
    Select file to upload: <input type="file" name="file" size="60" /><br />        
    Enter text: <input type="name" name="teste"/><br />        
    <br /> <input type="submit" value="Upload" />
</form>

My Servlet to capture data sent by POST looks like this:

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/UploadServlet")
@MultipartConfig(fileSizeThreshold=1024*1024*2, // 2MB
                 maxFileSize=1024*1024*10,      // 10MB
                 maxRequestSize=1024*1024*50)   // 50MB
public class UploadServlet extends HttpServlet {

    /**
     * Name of the directory where uploaded files will be saved, relative to
     * the web application directory.
     */
    private static final String SAVE_DIR = "uploadFiles";

    /**
     * handles file upload
     */
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // gets absolute path of the web application
    String appPath = request.getServletContext().getRealPath("");
    // constructs path of the directory to save uploaded file
    String savePath = appPath + File.separator + SAVE_DIR;        

    //Capturar campo teste do formulário
    String teste = request.getParameter("teste");
    System.out.println("Parametro capturado: " + teste);

    // creates the save directory if it does not exists
    File fileSaveDir = new File(savePath);
    if (!fileSaveDir.exists()) {
        fileSaveDir.mkdir();
    }

    for (Part part : request.getParts()) {
        String fileName = extractFileName(part);
        part.write(fileName);
    }

    request.setAttribute("message", "Upload has been done successfully!");
    getServletContext().getRequestDispatcher("/message.jsp").forward(
            request, response);
}

/**
 * Extracts file name from HTTP header content-disposition
 */
private String extractFileName(Part part) {
    String contentDisp = part.getHeader("content-disposition");
    String[] items = contentDisp.split(";");
    for (String s : items) {
        if (s.trim().startsWith("filename")) {
            return s.substring(s.indexOf("=") + 2, s.length()-1);
        }
    }
    return "";
  }
}

When the enctype="multipart / form-data" attribute is in the form I can not capture text, because the request.getParameter () always returns a null value. I use GlassFish 4.1 server, and am starting my studies in back-end. Of course, I help everyone.

    
asked by anonymous 05.04.2016 / 22:58

1 answer

0

Problem solved, found solution in Oracle documentation:

The fileupload Example Application

If someone encounters this same problem, here is the registered solution that worked in my project.

    
24.04.2016 / 01:23