我尝试将一些数据从jsp表单发送到servlet。除了type="text"
之外,我的所有数据都是type="file
。我知道如果我想将数据发送到我的servlet,我必须使用request.getParameter(...)
。(我的数据)In为了不为null,我必须使用method="get"
。但如果我想上传文件,我必须使用method="post"
。如何使用一个表单将这两种类型传递给我的servlet?提前感谢!
的.jsp
<form method="post" action="Servlet">
user:<input type="text" name="user"/>
img<input type="file" name="img"/>
</form>
Servlet.java
doPost(req,resp){
user = req.getParameter("user");//user == NULL
}
OR
的.jsp
<form method="get" action="Servlet">
user:<input type="text"/>
img<input type="file"/>
</form>
Servlet.java
doGet(req,resp){
//img not passed
}
答案 0 :(得分:1)
形式:
<form id="uploadForm" name="uploadForm" action="UploadServlet" method="post" enctype="multipart/form-data">
user:<input type="text" name="user"/>
img<input type="file" name="image"/>
</form>
你仍然可以通过邮寄请求获得两者:
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
InputStream fileContent = null;
String user = "";
for (FileItem item : items)
{
if (item.isFormField())
{
String fieldName = item.getFieldName();
String fieldValue = item.getString();
if(fieldName.equalsIgnoreCase("user"))
{
user = fieldValue;
}
}
else
{
String fieldName = item.getFieldName();
if(fieldName.equalsIgnoreCase("image"))
{
fileContent = item.getInputStream();
}
}
}
}
这只是如何使用文件类型处理post
请求的示例。