【问题标题】:Sending File from JSP to Servlet将文件从 JSP 发送到 Servlet
【发布时间】:2012-11-14 20:40:31
【问题描述】:

请看下面的代码

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>&nbsp;</p>
  <p>&nbsp;</p>
<p>&nbsp;</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>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</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?

【问题讨论】:

  • 知道客户端文件绝对位置的目的究竟是什么?您打算如何处理这些在实际应用程序中通常完全无用的信息,因为服务器无论如何都无法直接访问客户端的磁盘文件系统。
  • 他可能想跟踪源文件,例如我们经常在Word文档的页脚中看到完整的文件路径。也许如果我们能知道最终的目的,我们就能给出更好的建议。
  • @BalusC:我们将它转​​移到桌面程序,因此这个问题得到了解决。但我仍然对这个问题感兴趣。我们需要做的是,从用户那里读取txt、csv、xml和Excel文件,加载到数组列表中,显示数据,询问用户分隔符,根据数据创建表格。换句话说,这是一个 KPI。但是我问了很多关于这个的问题,发现使用 java web 来满足所有要求是一项非常艰巨的任务,所以我们现在是桌面应用程序,正如我们第一次计划的那样,这就是整个团队的技术能够而不是网络
  • 这在 web 中很难,因为客户端必须自己发送文件的内容,而不是服务器必须根据客户端提供的路径自己获取文件的内容(如果可能的话,它会一直是一个巨大的安全漏洞)。实际上,客户端应用程序(或您自己称呼的桌面程序)将能够做到这一点。如果您仍然坚持使用 Web 应用程序,那么(签名的)applet 或 webstart 应用程序将是您想到的解决方案之一。

标签: java jsp tomcat servlets netbeans


【解决方案1】:

我不需要发送文件,但至少需要发送文件的完整位置(它只是发送文件名)。如何将文件或文件的完整位置从 JSP 发送到 servlet?

使用标准 HTML &lt;input type="file"&gt; 元素是不可能的。它仅发送整个文件内容以及文件名,因为这基本上是服务器获取文件内容的唯一方式。服务器即无法直接访问客户端的本地磁盘文件系统,因此客户端的绝对磁盘文件系统路径作为唯一信息将毫无用处。请注意,由于安全漏洞,MSIE 浏览器将发送完整的客户端磁盘文件系统绝对路径,而不仅仅是文件名,但这不是应该的工作方式。

如果你真的只需要客户端的绝对磁盘文件系统路径,那么你最好的办法是创建一个(签名的)applet 或 webstart 应用程序,通过JFileChooser 获取它,最后将它嵌入到网页中。

另见:

【讨论】:

  • 太棒了。谢谢 :) 我真的很感激 :)
猜你喜欢
  • 2013-03-29
  • 2021-08-03
  • 2013-04-27
  • 2013-04-28
  • 2013-08-13
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多