Mysql java.io.IOException:损坏的表单数据:过早结束
您好,我在提交表单“java.io.IOException:Corrupt form data:premature ending”时遇到了这个错误,它发生在我在现有scriptlet中添加此代码时Mysql java.io.IOException:损坏的表单数据:过早结束,mysql,html,api,jsp,Mysql,Html,Api,Jsp,您好,我在提交表单“java.io.IOException:Corrupt form data:premature ending”时遇到了这个错误,它发生在我在现有scriptlet中添加此代码时 String selectedValue=request.getParameter("sel1"); //out.println("Selected Value is: "+selectedValue); String select1=request.getParameter("sel2"); //
String selectedValue=request.getParameter("sel1");
//out.println("Selected Value is: "+selectedValue);
String select1=request.getParameter("sel2");
//out.println("selected values is:"+select1);
String concat=selectedValue+"." +select1;
out.println(""+concat);
<%@ page import="java.io.*,java.sql.*,java.util.zip.*,com.oreilly.servlet.*" %>
<%
try
{
//if i include here,i can retrive the values but i cant upload the file into database,shows me "java.io.IOException: Corrupt form data: premature ending "
String selectedValue=request.getParameter("sel1");
//out.println("Selected Value is: "+selectedValue);
String select1=request.getParameter("sel2");
//out.println("selected values is:"+select1);
String concat=selectedValue+"." +select1;
out.println(""+concat);
Connection connection = null;
String connectionURL = "jdbc:mysql://localhost:3306/ksa";
PreparedStatement psmnt = null;
MultipartRequest request2=new MultipartRequest(request,"/home/adapco/Desktop/output",1024*1024*1024);
String filename=request2.getFilesystemName("file");
File f=request2.getFile("file");
out.println(f.exists()+"----------------"+f.getAbsolutePath());
out.print(filename);
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "root", "root");
psmnt = connection.prepareStatement("insert into file1(file_path) values(?)");
psmnt.setString(1, f.getPath());
int s = psmnt.executeUpdate();
//if i include here it shows me null.null
String selectedValue=request.getParameter("sel1");
//out.println("Selected Value is: "+selectedValue);
String select1=request.getParameter("sel2");
//out.println("selected values is:"+select1);
String concat=selectedValue+"." +select1;
out.println(""+concat);
if(s>0)
{
System.out.println("Uploaded successfully !");
}
else
{
System.out.println("Error!");
}
}
catch(Exception e)
{
out.print("-----------error--------------"+e);
}
%>
我现有的脚本
String selectedValue=request.getParameter("sel1");
//out.println("Selected Value is: "+selectedValue);
String select1=request.getParameter("sel2");
//out.println("selected values is:"+select1);
String concat=selectedValue+"." +select1;
out.println(""+concat);
<%@ page import="java.io.*,java.sql.*,java.util.zip.*,com.oreilly.servlet.*" %>
<%
try
{
//if i include here,i can retrive the values but i cant upload the file into database,shows me "java.io.IOException: Corrupt form data: premature ending "
String selectedValue=request.getParameter("sel1");
//out.println("Selected Value is: "+selectedValue);
String select1=request.getParameter("sel2");
//out.println("selected values is:"+select1);
String concat=selectedValue+"." +select1;
out.println(""+concat);
Connection connection = null;
String connectionURL = "jdbc:mysql://localhost:3306/ksa";
PreparedStatement psmnt = null;
MultipartRequest request2=new MultipartRequest(request,"/home/adapco/Desktop/output",1024*1024*1024);
String filename=request2.getFilesystemName("file");
File f=request2.getFile("file");
out.println(f.exists()+"----------------"+f.getAbsolutePath());
out.print(filename);
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "root", "root");
psmnt = connection.prepareStatement("insert into file1(file_path) values(?)");
psmnt.setString(1, f.getPath());
int s = psmnt.executeUpdate();
//if i include here it shows me null.null
String selectedValue=request.getParameter("sel1");
//out.println("Selected Value is: "+selectedValue);
String select1=request.getParameter("sel2");
//out.println("selected values is:"+select1);
String concat=selectedValue+"." +select1;
out.println(""+concat);
if(s>0)
{
System.out.println("Uploaded successfully !");
}
else
{
System.out.println("Error!");
}
}
catch(Exception e)
{
out.print("-----------error--------------"+e);
}
%>
0)
{
System.out.println(“上传成功!”);
}
其他的
{
System.out.println(“错误!”);
}
}
捕获(例外e)
{
输出。打印(“--------------错误-----------------”+e);
}
%>
如果我从现有的代码中排除该代码,它可以正常工作。有时,如果我在catch之后或try块末尾包含该代码,它会显示为null。我需要读取下拉列表的索引值,并用点连接它们。错误为“null.null”。实际结果应为示例:1.1。
这是我的html代码
<%@ page language="java" %>
<HTML>
<FORM ENCTYPE="multipart/form-data" ACTION="uploadFile.jsp" METHOD=POST>
<center>
<table bgcolor=#38ACEC>
<tr>
<center><td colspan="2" align="center"><B>UPLOAD THE FILE</B><center></td>
</tr>
<tr><td colspan="2" align="center"> </td></tr>
<tr><td><b>Choose the file To Upload:</b></td>
<td><INPUT NAME="file" TYPE="file"></td>
</tr>
<tr><td><select name="sel1">
<option value="1">Aerospace</option>
<option value="2">Automotive</option>
<option value="3">Energy</option>
<option value="4">IC Engines</option>
<option value="5">Wind</option>
<option value="6">Turbo</option>
<option value="7">IT</option>
<option value="8">Training</option>
</select>
<br>
<select name="sel2">
<option value="1">Internal</option>
<option value="2">Demos</option>
<option value="3">Best Practice</option>
<option value="4">Marketing</option>
<option value="5">Papers & public</option>
<option value="6">Validation</option>
<option value="7">Training</option>
</select></td></tr>
<tr><td colspan="2" align="center"> </td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="Send File"> </td></tr>
<table>
</center>
</FORM>
</html>
上传文件
选择要上载的文件:
航空航天
汽车
能量
内燃机
风
涡轮
信息技术
训练
内部的
演示
最佳做法
营销
报纸与公众
验证
训练
这是一个非常古老的示例。或者说,多部分解析器MultipartRequest
有一些bug。有关概述,请参阅相关问题。而是使用或仅使用新的Servlet3.0内置的request.getPart()
方法。另请参见这是您得到的一个非常古老的示例。Oreilly multipart parserMultipartRequest
有一些bug。有关概述,请参阅相关问题。而是使用或仅使用新的Servlet3.0内置的request.getPart()
方法。另请参见我知道,但只有当我尝试读取下拉列表值时才会发生这种情况,否则它适用于所有类型的文件大小。当您有多部分请求时,您不能使用request.getParameter(“sel1”)代码>即“HttpServletRequest”。使用request2.getParameter(“sel1”)代码>我用request2.getParameter(“sel1”)尝试了与您相同的示例代码>它工作并产生选定的值。因此,再次检查并提供正确的结果,而不是“它也不起作用…”。你应该经常解释发生了什么。哦,很抱歉,我试图修改id,但忘了将其更改为名称…现在我知道它可以工作,但只有当我尝试读取下拉值时才会发生,否则它适用于所有类型的文件大小。当你有多部分请求时,你不能使用request.getParameter(“sel1”)代码>即“HttpServletRequest”。使用request2.getParameter(“sel1”)代码>我用request2.getParameter(“sel1”)尝试了与您相同的示例代码>它工作并产生选定的值。因此,再次检查并提供正确的结果,而不是“它也不起作用…”。你应该经常解释发生了什么。哦,很抱歉,我试图修改,但忘了将id更改为名称……现在可以工作了