【问题标题】:j2ee primefaces fileupload file saving destinationj2ee primefaces fileupload 文件保存目的地
【发布时间】:2010-12-05 11:12:55
【问题描述】:

今天我遇到了关于 PrimeFaces FileUpload 的问题。它工作得很好,但是文件存储在 JBoss 的临时目录中,所以每当我重新部署应用程序或只是将源提交到 svn 时,我上传的所有图像都消失了。所以想问一下,有没有办法把图片保存到war项目的“source”目录下。

我的 handleFileUpload 方法:

public String getUrlBase() {
    return FacesContext.getCurrentInstance().getExternalContext().getRealPath("//upload");
}

public void handleFileUpload(FileUploadEvent event) {
        new File(getUrlBase() + "/" + album.getId()).mkdirs();
        File result = new File(getUrlBase() + "/" + album.getId() + "/" + event.getFile().getFileName());

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(result);

            byte[] buffer = new byte[BUFFER_SIZE];

            int bulk;
            InputStream inputStream = event.getFile().getInputstream();
            while (true) {
                bulk = inputStream.read(buffer);
                if (bulk < 0) {
                    break;
                }
                fileOutputStream.write(buffer, 0, bulk);
                fileOutputStream.flush();
            }

            fileOutputStream.close();
            inputStream.close();

            FacesMessage msg = new FacesMessage("Succesful",
                    event.getFile().getFileName() + " is uploaded.");
            FacesContext.getCurrentInstance().addMessage(null, msg);

        } catch (IOException e) {
            e.printStackTrace();
            FacesMessage error = new FacesMessage("The files were not uploaded!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }

编辑:另一个问题

我的视图文件:

<h:form enctype="multipart/form-data" prependId="false">
        <p:growl id="messages" showSummary="true" showDetail="true" />
        <p:fileUpload fileUploadListener="#{photo.handleFileUpload}"
                      update="messages"  sizeLimit="1073741824"
                      multiple="true" label="choose" allowTypes="*.jpg;*.png;*.gif;"
                      description="Images" />
    </h:form>

当我将 update="messages" 添加到 fileUpload 我得到

javax.servlet.ServletException: null source

每当我尝试使用文件上传打开页面时。你不知道如何摆脱它吗?

【问题讨论】:

    标签: java file-upload primefaces


    【解决方案1】:

    您可以根据需要在web.xml 中配置上传目录。

    <filter>
      <filter-name>PrimeFaces FileUpload Filter</filter-name>
      <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
      </filter-class>
      <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/Users/primefaces/temp</param-value>
      </init-param>
    </filter>
    

    【讨论】:

    • 根据使用指南,这里只是一个存放临时文件的地方。我需要上传一些图像,然后将它们显示在照片库中......所以我想将它们存储在 Web 根目录的“上传”目录中(例如 WEB-INF 目录所在的位置)。因此,当我将源提交到 svn 时,其他人也会在图库中拥有图片。我尝试将uploadDIrectory 设置为/upload,但这似乎不起作用。
    • 不要将上传的图片保存在源文件夹中。从来没有(你来自 PHP 背景吗?)。将它们保存在磁盘上的某个位置。如果您想与其他开发人员共享它们 - 将它们保存在数据库中(对于小文件,这是一个不错的选择)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多