请看下面的代码
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?
答案 0 :(得分:2)
我不需要发送文件,但至少需要文件的完整位置(它只发送文件名)。如何将文件或文件的完整位置从JSP发送到servlet?
使用标准HTML <input type="file">
元素是不可能的。它只发送整个文件内容和文件名,因为这基本上是服务器获取文件内容的唯一方式。服务器没有直接访问客户端的本地磁盘文件系统,因此客户端的绝对磁盘文件系统路径作为唯一信息将是无用的。请注意,MSIE浏览器将由于安全漏洞而发送完整的绝对客户端磁盘文件系统路径,而不仅仅是文件名,但这并不是事情应该如何工作。
如果您确实只需要客户端的绝对磁盘文件系统路径,那么最好的办法是创建一个(签名的)applet或webstart应用程序,它通过JFileChooser
获取它并最终将其嵌入到网页中