Java Servlet文件上载ismultipartcontent返回false

Java Servlet文件上载ismultipartcontent返回false,java,jsp,servlets,Java,Jsp,Servlets,我正在尝试将所选文件从本地文件系统上载到应用程序中的文件夹。 这里使用的技术是jsp、servlet 单击Example.jsp的按钮后,控件将传递给请求servlet。 但是检查请求是否为多部分返回false。 所以控制台中会打印“抱歉,这个Servlet只处理文件上传请求” Example.jsp <form action="Request" method="Post" name = "invoices" target="_self"> <div class="invo

我正在尝试将所选文件从本地文件系统上载到应用程序中的文件夹。 这里使用的技术是jsp、servlet

单击Example.jsp的按钮后,控件将传递给请求servlet。 但是检查请求是否为多部分返回false。 所以控制台中会打印“抱歉,这个Servlet只处理文件上传请求”

Example.jsp

<form action="Request" method="Post" name = "invoices"  target="_self">

<div class="invoicetable">  
<table>

    <colgroup>
        <col class="first" span="1">
        <col class="rest" span="1">
    </colgroup>

    <tr>
        <td>Start date:</td>
        <td><input type = "text" name = "start_date" id="datepicker"  size = "6" maxlength="10"/></td>
    </tr>
    <tr>
        <td>End date:</td>
        <td><input type = "text" name = "end_date" id="datepicker2"  size = "6" maxlength="10"/></td>
    </tr>
    <tr>
        <form action="Request" enctype="multipart/form-data" method="post" name = "upload">
            <table>
            <tr>
                <td>Input File:</td>
                <td><input type = "file" name ="datafile" size="30" maxlength="200"/></td>
            </tr>
            </table>
            <div>
                <input type ="submit" name="invoice" value="Press"/> to upload the file!
                <input type="hidden"  name = "type" value="upload">      
            </div>

        </form>
    </tr>
    <tr>
        <td>Regular</td>
        <td>
            <input type = "radio" name ="input_type" value="regular"/>

        </td>
    </tr>
        <tr>
        <td>Manual</td>
        <td>
            <input type = "radio" name ="input_type" value="manual" checked/>

        </td>
    </tr>
        <tr>
        <td>Final</td>
        <td>
            <input type = "radio" name ="input_type" value="final"/>

        </td>
    </tr>
</table>

</div>

<div style="margin-left: 20px">
    <input type ="submit" name="invoice" value="Submit" class="button"/>
    <input type="hidden"  name = "type" value="invoice">      
</div>

</form>

开始日期:
结束日期:
输入文件:
上传文件!
有规律的
手册
最终的
请求-doPost方法

jsp_request = request.getParameter("type");
if (jsp_request.equalsIgnoreCase("upload")) {
            String file_location = request.getParameter("datafile");
            ServletFileUpload uploader = null;

                    //Checking if the request is multipart  
            if(ServletFileUpload.isMultipartContent(request)){


                  try {
                        String upload_location_holder = request.getServletContext().getRealPath("");
                        upload_location_holder = upload_location_holder.substring(0,upload_location_holder.indexOf(".")) + 
                        upload_location_holder.substring(upload_location_holder.lastIndexOf("/")+1);


                        //excel file goes into the input files folder
                        String excel_name = upload_location_holder + "/WebContent/input_files/" + file_location;

                        File file = new File(excel_name);

                        DiskFileItemFactory fileFactory=new DiskFileItemFactory();

                        fileFactory.setRepository(file);
                        uploader = new ServletFileUpload(fileFactory);

                        List<FileItem> fileItemsList = uploader.parseRequest(request);
                        Iterator<FileItem> fileItemsIterator = fileItemsList.iterator();

                        while (fileItemsIterator.hasNext()) {
                            FileItem item = (FileItem) fileItemsIterator.next();
                            if (!item.isFormField()) {
                                String fileName = item.getName();    
                                String root = getServletContext().getRealPath("/");
                                File path = new File(root + "/uploads");
                                if (!path.exists()) {
                                    boolean status = path.mkdirs();
                                }

                                File uploadedFile = new File(path + "/" + fileName);
                                System.out.println(uploadedFile.getAbsolutePath());
                                item.write(uploadedFile);
                            }
                        }

                       //File uploaded successfully
                       request.setAttribute("message", "File Uploaded Successfully");
                    } catch (Exception ex) {
                      // request.setAttribute("message", "File Upload Failed due to " + ex);
                       ex.printStackTrace();
                    }          

                }else{
                    System.out.println("Sorry this Servlet only handles file upload request");
                }


}
jsp_request=request.getParameter(“type”);
if(jsp_request.equalsIgnoreCase(“上传”)){
字符串文件_location=request.getParameter(“数据文件”);
ServletFileUpload uploader=null;
//检查请求是否为多部分
if(ServletFileUpload.isMultipartContent(请求)){
试一试{
字符串upload\u location\u holder=request.getServletContext().getRealPath(“”);
upload_location_holder=upload_location_holder.substring(0,upload_location_holder.indexOf(“.”)+
upload\u location\u holder.substring(upload\u location\u holder.lastIndexOf(“/”)+1);
//excel文件进入“输入文件”文件夹
字符串excel\u name=upload\u location\u holder+“/WebContent/input\u files/”+file\u location;
文件文件=新文件(excel\u名称);
DiskFileItemFactory fileFactory=新的DiskFileItemFactory();
setRepository(文件);
uploader=新ServletFileUpload(fileFactory);
List fileItemsList=uploader.parseRequest(请求);
迭代器fileItemsIterator=fileItemsList.Iterator();
while(fileItemsIterator.hasNext()){
FileItem=(FileItem)fileItemsIterator.next();
如果(!item.isFormField()){
字符串文件名=item.getName();
字符串root=getServletContext().getRealPath(“/”);
文件路径=新文件(根+“/上载”);
如果(!path.exists()){
布尔状态=path.mkdirs();
}
文件上传文件=新文件(路径+“/”+文件名);
System.out.println(uploadedFile.getAbsolutePath());
item.write(上传文件);
}
}
//文件上载成功
request.setAttribute(“消息”,“文件上传成功”);
}捕获(例外情况除外){
//request.setAttribute(“消息”,“文件上载因“+ex”而失败);
例如printStackTrace();
}          
}否则{
println(“对不起,这个Servlet只处理文件上传请求”);
}
}
我试着用谷歌搜索一个可能的解决方案。但没有得到任何回答。 感谢您的帮助。

亲爱的,在您的表单标签中使用
enctype=“multipart/form data”
,如:

form action="Request" method="Post" name="logout" enctype="multipart/form-data" 

我在内部表单(upload)中使用了enctype=“multipart/form data”@eversmary,问题是您有一个“内部”表单;您不能在另一个
元素中包含
元素。@AnthonyGrist:正如您所建议的,我删除了ineer表单..在java代码中做了一些小更改..现在可以使用..很抱歉回复太晚..无论如何,谢谢您..)