Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么getParameters在使用enctype=“multipart/form data”时返回null?_Java_Spring Mvc_Servlets_File Upload_Multipartform Data - Fatal编程技术网

Java 为什么getParameters在使用enctype=“multipart/form data”时返回null?

Java 为什么getParameters在使用enctype=“multipart/form data”时返回null?,java,spring-mvc,servlets,file-upload,multipartform-data,Java,Spring Mvc,Servlets,File Upload,Multipartform Data,我正在使用Spring4和ApacheTomcat7开发一个网站,在尝试使用inputFile上传图像时遇到了一些问题。当我检查控制器中的参数时,它们总是空的。 这是我的HTML代码: <form action="product.htm" method="post" enctype="multipart/form-data"> <p>Product

我正在使用Spring4和ApacheTomcat7开发一个网站,在尝试使用inputFile上传图像时遇到了一些问题。当我检查控制器中的参数时,它们总是空的。 这是我的HTML代码:

<form action="product.htm" method="post"
                     enctype="multipart/form-data">
            <p>Product name:</p>
            <p style="text-align: left;"><input type = "text" id="productName" name="productName" required="required" /></p>                        
            <p>Product description:</p>
            <p style="text-align: left;"><input type = "text" id="productDescription" name="productDescription" /></p> 
            <p>Product category</p>
            <p style="text-align: left;"><select id="productcategory" name="productcategory">
                <c:forEach var="item" items="${categories}" varStatus="loop">
                    <option value="<c:out value="${item.getIdproductCategory()}"/>"><c:out value="${item.getCategory()}"/></option>
                </c:forEach>
            </select></p>
        <p>Select a file to upload:</p>
        <input type="file" name="file" size="50" />
        <br />
        <p style="text-align: left;"><input type="submit" id="submit" name="submit" value="<spring:message code="label.submit"></spring:message>" /></p>
    </form>
我找到了这个链接:

我需要使用这些参数,因为我正在数据库中保存一些字段。 谢谢你抽出时间

@Override
public ModelAndView handleRequest(HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception {
    ModelAndView mv = new ModelAndView("product");

    if (hsr.getParameter("submit") != null) {
        insertProduct(hsr);
        mv.addObject("send", true);
    } else {
        mv.addObject("send", false);
    }

    return mv;
}

public void insertProduct(HttpServletRequest hsr) {
  

    try {
        
        boolean isMultipart;
        String filePath;
        filePath
                = hsr.getServletContext().getInitParameter("file-upload");
        int maxFileSize = 50 * 1024;
        int maxMemSize = 4 * 1024;
        File file;
        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("http://localhost:8080/LasDelicias2/resources/images"));

        // 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(hsr);

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

            while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()) {
                    // Get the uploaded file parameters
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    String contentType = fi.getContentType();
                    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);

                }
            }

        } catch (Exception ex) {
            System.out.println(ex);
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}