Java 如何将带有多个参数的图像上载到servlet

Java 如何将带有多个参数的图像上载到servlet,java,image,servlets,Java,Image,Servlets,我想使用带有POST方法和Servlet的HTML表单上传图像和多个字段。一旦收到数据,数据将存储到数据库中。我搜索了,但只找到了只上传文件或字段的解决方案 例如: 文件:图像 字段:图像ID 字段:图像名称 等 如何创建表单和Servlet来实现这一点?基本上,您需要一个多部分/表单数据HTML表单来将数据发布到Servlet示例: <form action="file-upload" method="post" enctype="multipart/form-data" >

我想使用带有POST方法和Servlet的HTML表单上传图像和多个字段。一旦收到数据,数据将存储到数据库中。我搜索了,但只找到了只上传文件或字段的解决方案

例如:

文件:图像 字段:图像ID 字段:图像名称 等 如何创建表单和Servlet来实现这一点?

基本上,您需要一个多部分/表单数据HTML表单来将数据发布到Servlet示例:

<form action="file-upload" method="post" enctype="multipart/form-data" >
    <table>
        <tr>
            <td><input type="text" name="field1" /></td>
        </tr>
        <tr>
            <td><input type="file" name="file1" /></td>
        </tr>
        <tr>
            <td><input type="submit" value="Send" /></td>
        </tr>
    </table>
</form>

注意FileItem fi是包含字段信息的对象。对于该文件,您可以使用fi.getInputStream或fi.getString获取其内容,具体取决于您想要获取它的方式和数据量等。

您可以创建一个formdata对象,并如图所示进行填充
然后作为请求参数检索,如String message=request.getParametermessage

参数是imageid,imagenameno我使用java和Servlet您知道javascript表单数据对象吗?但我想上传图像和字段从java@KarthikKeyan图像是文件输入类型=文件,字段是文本输入类型=文本。
@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();
    }
}