我正在使用HTML表单将文件上传到Servlet。通常,我想上传XML文件,但是验证是在服务器端完成的。
如何在Servlet上以字符串形式获取文件的内容?
这是我的HTML表单:
<form action="xml" enctype="multipart/form-data">
Select XML file: <input data-theme="b" type="file" name="xmlFile" >
<input data-theme="b" id="xml" type="submit" value="Load">
</form>
这是我的Servlet:
public class LoadFromXML extends HttpServlet {
private BlackJackWebService_Service service;
private BlackJackWebService BlackJackWB;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
URL serverUrl = new URL("http://" + "localhost" + ":" + 8080 + "/bjapi/BlackJackWebService");
service = new BlackJackWebService_Service(serverUrl);
BlackJackWB = service.getBlackJackWebServicePort();
String XMlFileContent = request.getParameter("xmlFile");
boolean isDuplicate = false;
boolean isValid = true;
try {
BlackJackWB.createGameFromXML(XMlFileContent);
} catch (DuplicateGameName_Exception ex) {
isDuplicate = true;
} catch (InvalidParameters_Exception ex) {
isValid = false;
} catch (InvalidXML_Exception ex) {
isValid = false;
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>BlackJack</title>");
out.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
out.println("</head>");
out.println("<body>");
if (isDuplicate == false && isValid == true) {
out.println("<h1 id=\"created\">" + " Game created" + "</h1>");
} else if (isDuplicate == true) {
out.println("<h1 id=\"created\">" + " Game already exist !" + "</h1>");
} else if (isValid == false) {
out.println("<h1 id=\"created\">" + " Invalid XML !" + "</h1>");
}
out.println("<form action=\"get_waiting_games\" method=\"get\">");
out.println("<input data-theme=\"b\" type=\"submit\" value=\"Join a game\">");
out.println("</form>");
out.println("<form action=\"create_game.html\" method=\"get\">");
out.println("<input data-theme=\"b\" type=\"submit\" value=\"Create another game\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
目前,我试图将文件作为“参数”获取-返回空值。
我的目标是上传文件,将其内容作为servlet中的字符串获取,并继续处理servlet中的字符串。
文件上载遵循RFC 1687,并向服务器发送Multipart(multipart / form-data)
要处理多部分服务器端,请使用适当的库,例如Apache Commons FileUpload
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句