使用 JSF 和 Primefaces 下载文件时出错

阿列克谢夫

我有一个这样的实体

@Entity
public class myFiles  implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int idmyFiles;


    @Lob   
    private File myFile;

    getters and setters...

我有一个似乎有效的上传表单,当我上传文件时,我可以在 postgtes 表中看到它。

在表格中(我使用的是primefaces)我有这个

<p:fieldset id="myFiles" class="recuadro" legend = "Upload a fileos">
    <p:fileUpload value="#{abmBean.fichero}" mode="simple" />
    <p:commandButton id="btnSubir" ajax="false" process="@all" update="@all"
        action="#{abmBean.uploadFile()}" value="Subir" />
</p:fieldset>   

这是上传文件的方法

public void uploadFile() {
    File destFile = new File("/tmp/"+fichero.getFileName());
    FileUtils.copyInputStreamToFile(fichero.getInputstream(), destFile);

    /* Then I just create a myFile object F and just F.setFile(destFile) */
}

它似乎工作

要下载文件,我有这个方法

public downloadFile(int id) {
    /* the int id is the id of the myfile object F */

    /* I retrieve from the database the F object and then this*/
    File fichero = new File("/tmp/"+F.getFile.getName());

    FileUtils.copyFile(F.getFile, fichero);

    Faces.sendFile(fichero, true);
}

这工作得很好,我把文件拿回来了

但问题是,我意识到我上传的文件也被复制到 /tomcat7/bin 文件夹,如果我从那里删除文件,那么当我想下载它时,我会收到 fileNotFoundException。

我所需要的只是能够向用户提供数据库中的文件

我在 Debian 上使用 Tomcat7、Java 1.6(是的,很旧)Primefaces 6、Postgresql 9.1 和 JSF2

阿列克谢夫

感谢大家的回答,我发现了错误。

我认为 File 是包含该文件的二进制文件,我认为该文件存储在数据库中,但我错了,该 File 是一个抽象文件,仅存储一些元数据和文件路径,文件本身需要存储和从磁盘中检索。

我将不得不修改我的系统以使用 byte[] 来保存实际的二进制文件,这太令人难过了,因为我需要制作很多程序来存储和检索它们。

再次感谢您的回答,我从他们那里学到了很多东西

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

graphicImage不使用jsf和primefaces收费

来自分类Dev

使用JSF下载文件

来自分类Dev

使用 PrimeFaces 和 JSF 上传和保存图像

来自分类Dev

JSF和jQuery vs Primefaces

来自分类Dev

JSF 2.2和Primefaces 4.0:文件上传后刷新图像

来自分类Dev

JSF-使用Primefaces RowEditEvent时如何获取新旧值?

来自分类Dev

使用 jsf Primefaces 将文件上传到 Web 根目录

来自分类Dev

提交时的jsf primefaces fileupload

来自分类Dev

Spring Boot和JSF / Primefaces / Richfaces

来自分类Dev

JSF和Primefaces组件无法渲染

来自分类Dev

使用<iframe>和AJAX下载文件时出现404

来自分类Dev

如何在JSF和PrimeFaces中上载和读取文本文件?

来自分类Dev

使用布尔标志和ActionListener启用/禁用commandLink。JSF PrimeFaces

来自分类Dev

当项目为null时,如何使用Primefaces和JSF EL使用三元运算符来呈现特定文本?

来自分类Dev

使用WebClient从https下载文件时出错

来自分类Dev

使用python脚本下载文件时出错

来自分类Dev

从Github资产API使用Meteor下载文件时出错

来自分类Dev

从Github资产API使用Meteor下载文件时出错

来自分类Dev

使用scp从服务器下载文件时出错

来自分类Dev

滚动时在JSF中修复了PanelGrid(primefaces)

来自分类Dev

使用JSF PrimeFaces时,类型java.lang.String上的属性不可读

来自分类Dev

使用Ajax和iframe下载文件

来自分类Dev

使用Flask上传和下载文件

来自分类Dev

使用certutil和Python下载文件

来自分类Dev

使用Jersey和RestyGWT下载文件

来自分类Dev

使用雾上传和下载文件

来自分类Dev

具有PrettyFaces和JSF 2.2.3的Primefaces FileUpload

来自分类Dev

actionListener不适用于jsf和primefaces

来自分类Dev

JSF和Primefaces-RemoteCommand无法正常工作

Related 相关文章

热门标签

归档