Java 什么JAR包含getPart()方法?
我试图从Apache7.0服务器上传一个文件到mySQL数据库。我写了html代码来上传一个文件Java 什么JAR包含getPart()方法?,java,mysql,jsp,Java,Mysql,Jsp,我试图从Apache7.0服务器上传一个文件到mySQL数据库。我写了html代码来上传一个文件 <form action="UploadValidate.jsp" method="post" enctype="multipart/form-data"> <fieldset> <legend><font size="4" color="white">File Upload</font></legend><
<form action="UploadValidate.jsp" method="post" enctype="multipart/form-data">
<fieldset>
<legend><font size="4" color="white">File Upload</font></legend><br/><br/>
<font size="4" color="white"><b>
<h3> Select File to Upload</h3>       
<input type="file"name="file" /><br/><br/>
<center>
<input type="submit" value="Upload File" /><br/><br/></center>
</font>
</fieldset>
</form>
文件上传
选择要上载的文件
这是UploadValidate.jsp
<%@ page import="java.io.*,java.sql.*,java.lang.String.*,com.oreilly.servlet.*"%>
<%
InputStream inputstream=null;
String str=request.getParameter("file");
Part filePart=request.getPart(str);
out.println(filePart);
if(filePart!=null){
out.println(filePart.getName());
out.println(filePart.getSize());
out.println(filePart.getContentType());
//output the inputstream of uploaded file
inputstream=filePart.getInputStream();
}
else{
out.println("cannot execute if condition");
}
%>
<%
try{
String message=null;
int id=123;
String url="jdbc:mysql://localhost:3306/Project";
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(url,"root","admin");
String sql="INSERT INTO uploadfile(id,file) VALUES(?,?)";
PreparedStatement stmt=con.prepareStatement(sql);
stmt.setInt(1,id);
if(inputstream!=null){
stmt.setBlob(2,inputstream);
}
int row=stmt.executeUpdate();
if(row>0){
out.print("<h3><font color=red> Success Welcome!!!!!<br><br> </font></h3>");
}
}catch(Exception e){
e.printStackTrace();
}
//session.setAttribute("Message",message);
//response.sendRedirect("Message.jsp");
%>
0){
打印(“欢迎成功!!!
”;
}
}捕获(例外e){
e、 printStackTrace();
}
//session.setAttribute(“消息”,消息);
//sendRedirect(“Message.jsp”);
%>
即使我选择了要上载的文件,filePart对象仍返回null event。如果bolck返回,它将终止
“如果条件为空,则无法执行空”作为输出。要回答实际问题,获取空返回值的原因有两个。首先,守则:
String str=request.getParameter("file");
Part filePart=request.getPart(str);
应该是
Part filePart = request.getPart("file");
但是,至关重要的是,request.getPart
方法是一个Servlet3.0特性,它需要使用带有注释的Servlet(而不是JSP文件)
然而,该准则中充斥着不良做法
如评论中所述,十多年来一直不鼓励使用Scriptlet;您应该首先使用servlet作为某种控制器,然后使用如下方式(在内部)转发到JSP视图:
request.getRequestDispatcher("/WEB-INF/jsp/view.jsp").forward(request, response);
和
HTML元素也被弃用多年
最后,有很多库可以帮助上传文件。例如
这不是一个好主意。JSP中的Scriptlet代码在1999年过时了。不要这样做。调试器会很快告诉你哪里出错了。你为什么要重新发明轮子?网络上有很多例子。例如,请参阅,您可以看到如何处理“多部分/表单数据”我尝试使用Part filePart=request.getPart(“文件”);但无法获得结果。它返回null。我已编辑了我的答案,以解释为什么
request.getPart(“文件”)
也不起作用。您确实需要将代码从JSP移到Servlet中。如果您确实想将其保存在JSP中,则需要使用Apache Commons FileUpload来处理上载。