Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xpages中从Java传递对文件的引用_Java_Xpages_Xpages Ssjs_Xpages Extlib_Ssjs - Fatal编程技术网

如何在xpages中从Java传递对文件的引用

如何在xpages中从Java传递对文件的引用,java,xpages,xpages-ssjs,xpages-extlib,ssjs,Java,Xpages,Xpages Ssjs,Xpages Extlib,Ssjs,我为我的英语感到抱歉。我使用翻译。Java有一个代码。从数据库中读取字段Posgresql bytea二进制数据,并将其存储在文件中: <code> public static void saveToFile() throws IOException { try { Connection conn = JdbcUtil.getConnection(FacesContext.getCurrentInstance(), "derby1");

我为我的英语感到抱歉。我使用翻译。Java有一个代码。从数据库中读取字段Posgresql bytea二进制数据,并将其存储在文件中:

<code>
    public static void saveToFile() throws IOException {
    try {
    Connection conn = JdbcUtil.getConnection(FacesContext.getCurrentInstance(), "derby1");
            ResultSet rs = conn.createStatement().executeQuery(
                            "SELECT files FROM test_goverment where who='d'");
            byte[] imgBytes = null;
            if (rs != null) {
                while (rs.next()) {
                    imgBytes = rs.getBytes(1);
                }
                FileOutputStream os = new FileOutputStream("c:\\samoutput.txt");
                os.write(imgBytes);
                os.flush();
                os.close();
            }
            rs.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        enter code here}
    }
</code>

如何在Xpages中将要下载的文件传输给用户。下载后将其删除。

您只想将查询结果传输到浏览器客户端下载,不想保存

而不是先将查询结果保存到文件中,然后将其传输以供以后下载
您可以流式传输内容直接到XPage的响应,如下所示:

public static void downloadFile() throws IOException {
    try {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Connection conn = JdbcUtil.getConnection(facesContext, "derby1");
        ResultSet rs = conn.createStatement().executeQuery(
                            "SELECT files FROM test_goverment where who='d'");
        byte[] imgBytes = null;
        if (rs != null) {
            while (rs.next()) {
                imgBytes = rs.getBytes(1);
            }
            ExternalContext extCon = facesContext.getExternalContext();
            XspHttpServletResponse response = (XspHttpServletResponse)extCon.getResponse();
            response.reset();
            response.setContentType("text/plain");
            response.setHeader("Content-disposition", "attachment; filename=output.txt");
            response.setHeader("Cache-Control", "no-cache");
            OutputStream os = response.getOutputStream();
            os.write(imgBytes);
            os.flush();
            facesContext.responseComplete();
            rs.close();              
        }
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
你也可以看看这个。它向您展示了如何呈现文件以供下载,以防您想/不得不保留文件而不是流