JSP 表单发送数据,包括 servlet 中的文件
JSP form sending data including files in servlet
我正在尝试将一些数据从 jsp 表单发送到 servlet。我的所有数据都是 type="text"
除了一个 type="file
”。我知道如果我想将数据发送到我的 servlet,我必须使用 request.getParameter(...)
。(我的数据)在为了不为空,我必须使用 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
}
或
.jsp
<form method="get" action="Servlet">
user:<input type="text"/>
img<input type="file"/>
</form>
Servlet.java
doGet(req,resp){
//img not passed
}
表格:
<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>
您仍然可以通过 post 请求获得两者:
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
文件类型请求的示例。
我正在尝试将一些数据从 jsp 表单发送到 servlet。我的所有数据都是 type="text"
除了一个 type="file
”。我知道如果我想将数据发送到我的 servlet,我必须使用 request.getParameter(...)
。(我的数据)在为了不为空,我必须使用 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
}
或
.jsp
<form method="get" action="Servlet">
user:<input type="text"/>
img<input type="file"/>
</form>
Servlet.java
doGet(req,resp){
//img not passed
}
表格:
<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>
您仍然可以通过 post 请求获得两者:
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
文件类型请求的示例。