Servlet get parameter from multipart form in tomcat 7 [duplicate]

为君一笑 提交于 2019-11-27 07:53:32
Luiggi Mendoza

The problem is here:

String p_text = request.getParameter("p_data");
String gallery_nm = request.getParameter("upload_wall_gallery");

From How to upload files to server using JSP/Servlet? answer, you should get your parameters as FileItem which isFormField() methods returns true. Posting the relevant code fragment from the answer:

for (FileItem item : formItems) {
    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)
    }
}

Solution: move your other request parameters handling to the else section when calling if (!item.isFormField()).

for (FileItem item : formItems) {
    // processes only fields that are not form fields
    if (!item.isFormField()) {
        String fileName = new File(item.getName()).getName();
        fileName1+=fileName;
        String filePath = uploadPath + File.separator + fileName;
        File storeFile = new File(filePath);
        // saves the file on disk
        item.write(storeFile);
    } else {
        //here...
        String fieldname = item.getFieldName();
        String fieldvalue = item.getString();
        if (fieldname.equals("p_data")) {
            //logic goes here...
        } else if (fieldname.equals("upload_wall_gallery")) {
            //next logic goes here...
        }
    }
}
kaysush

Since its a multipart/form-data form a call to request.getParameter() will always return null. In this case what you have to do is

 if (item.isFormField()) {
     System.out.println("Got a form field: " + item.getFieldName()+ " " +item.getString());
 } else {
     // it is a file process, the way you are doing it
 }

I hope every thing should work fine.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!