【问题标题】:Download a file via HTML response通过 HTML 响应下载文件
【发布时间】:2017-09-04 09:46:45
【问题描述】:

我有一个描述 HTML 页面的 JSP。单击表中的文档时,应从数据库中下载该文档。所有本地,无客户端/服务器架构。由于我使用的特定架构,我只能使用 JSP。我使用流构建文件,但是当我下载它时,文件包含 JSP,而不是原始文件内容。我该如何解决这个问题? 注意:我尝试使用带有 Javascript 的 href 链接下载文件,但无法使其在简单的 JSP 中工作。代码部分:

`   queryGetDoc+= "'"+submit+"'";
    resultSet2 = statement2.executeQuery(queryGetDoc);  
    File file = new File(submit);
    file.createNewFile();   
        if(resultSet2!=null){                   
        FileOutputStream fos = new FileOutputStream(file);  
        resultSet2.first();
        InputStream  is = resultSet2.getBinaryStream(1);            
        byte[] buf = new byte[4096];
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        int read = 0;
         while ((read = is.read(buf)) > 0) {
            fos.write(buf, 0, read);
        } 
       response.setHeader("Content-disposition","attachement; filename="+submit+suffix);
       response.setContentType("text/plain");
       response.setCharacterEncoding("UTF-8");` 

【问题讨论】:

    标签: javascript java html jsp download


    【解决方案1】:

    这是 Web 主机的问题,而不是 JSP。您可以将 Web 主机配置为将 JSP 文件视为 Java 服务器页面文件或不将其视为 Java 服务器页面文件。我的猜测是它把它们当作一个简单的资源文件来对待。

    你不是想直接从浏览器加载jsp文件吧?浏览器不处理 jsp 文件。它处理html文件。您可以将 jsp 文件视为服务器必须首先转换的 html 文件。

    我了解您希望将所有内容都放在同一台计算机上,但这并不意味着您可以绕过标准的 http 协议。您仍然需要服务器,即使它与客户端是同一台计算机。我建议您为此使用Tomcat。它是免费的、轻量级的,并且可以完成工作,包括开箱即用的正确加载 jsp 文件,可以这么说。

    【讨论】:

    • JSP文件被外部软件调用。所以它被编译然后执行。我应该怎么做才能在正确的响应中下载文件?
    • @LucianoSacco 如果浏览器直接显示 JSP,那么我不得不说事实并非如此。因此,您的解决方案取决于正确配置此外部软件。不幸的是,这取决于此软件,我无法为您提供更多帮助。
    • 对不起,我会更具体。 JSP 是经过编译的,而不是简单地显示出来的。
    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 2022-10-05
    • 2014-10-22
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多