java - j2ee primefaces fileupload 文件保存目的地

标签 java file-upload primefaces

今天我遇到了 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);
        }
    }

编辑:另一个问题

我的 View 文件:

<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

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

最佳答案

如果需要,您可以在 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>

关于java - j2ee primefaces fileupload 文件保存目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358493/

相关文章:

Java迭代读取和解析

java - 在关闭 DialogFragment 之前获取用户确认

php - 在 Grocery 店 CRUD 中上传文件时检查文件格式

python - 创建一个简单的 HTML 文件上传页面

java - 如何将上传的文件保存在表单中,直到使用 jsf-2 和 primefaces-3.4 提交

java - JInput 的 getPollData() 不起作用

java - 如何在 Android 的 Fragment 中使用 'bundle' 而不是 'intent.putExtra()'

css - 乔姆拉/FTP : Files updated via ftp won't update in browser

javascript - 页面顶部的 JSF 滚动条

jquery - 在文档就绪时访问 primefaces widgetvars