请看他下面的代码
JSP
<%-- Document : index Created on : Nov 27, 2012, 1:11:48 PM Author : Yohan --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <div> <div>Content for New Div Tag Goes Here</div> <p> </p> <p> </p> <p> </p> <div> <form method="post" action="FileSelector" enctype="multipart/form-data"> Select File: <input type="file" name="location"/></div> <br> <input type="submit" value="Submit"/> </form> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> </div> </body> </html>
Servlet
package importWizard; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.*; import javax.servlet.http.*; public class FileSelector extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException { PrintWriter pw = response.getWriter(); File location = (File)request.getParameter("location"); pw.write(location); } }
如您所见,我无法将文件从JSP发送到Servlet。我不需要发送文件,但至少要发送文件的完整位置(它只是发送文件名)。如何将文件或文件的完整位置从JSP发送到servlet?
我不需要发送文件,但至少要发送文件的完整位置(它只是发送文件名)。 如何将文件或文件的完整位置从JSP发送到servlet?
使用标准HTML <input type="file">元素是不可能的。它仅发送整个文件内容以及文件名,因为这基本上是服务器获取文件内容的唯一方法。服务器即不能直接访问客户端的本地磁盘文件系统,因此作为唯一信息的客户端绝对磁盘文件系统路径将毫无用处。请注意,由于安全漏洞,MSIE浏览器将发送完整的绝对客户端磁盘文件系统路径,而不是仅发送文件名,但这并不是应该的工作方式。
<input type="file">
如果您真的只需要客户端的绝对磁盘文件系统路径,那么最好的选择是创建一个(签名的)小程序或webstart应用程序,并从中获取JFileChooser并最终将其嵌入到网页中。
JFileChooser