通过将文件拖到页面的任何位置来上传JSF文件

标签 jsf file-upload primefaces

我目前正在使用Primefaces fileUpload组件的拖放功能。它工作正常,但是我想要的是通过将文件拖到我的页面中的任何位置来直接上传文件,而无需单击按钮。

我尝试了这个:

$('.dropzone').on({
    'dragover dragenter': function (e) {
        e.preventDefault();
        e.stopPropagation();
    },
    'drop': function (e) {
        var dataTransfer = e.originalEvent.dataTransfer;
        if (dataTransfer && dataTransfer.files.length) {
            e.preventDefault();
            e.stopPropagation();
            $.each(dataTransfer.files, function (i, file) {

              uploadFile([{"name": "filename", "value": file.name}]);
            });
        }
    }
});
<p:remoteCommand name="uploadFile" action="#{bean.uploadFile()}" />
public void uploadFile(){
   String filename = 
       FacesContext.getCurrentInstance()
       .getExternalContext().getRequestParameterMap().get("filename");
}

问题在于这适用于文件名,而不适用于文件本身。无论如何,这是正确的方法,还是有一种方法可以将files列表转发到Primefaces fileUpload并以编程方式提交文件,而无需使用gui组件?

最佳答案

它已经在展示柜中了。
http://www.primefaces.org/showcase/ui/file/upload/auto.xhtml

需要auto="true"才能完成此操作。

更新:

呈现文件上传div后立即执行以下javascript。
然后,您可以将允许的文件类型拖放到页面中的任何位置。

$('.ui-fileupload').fileupload({
      dropZone: $(document)
});

关于通过将文件拖到页面的任何位置来上传JSF文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40104754/

相关文章:

java - 我应该如何从托管 bean 内的数据库读取数据?

php - 文件未使用 html 输入类型文件上传

ajax - 文件 uploader 的 Ajax 实现中的内存泄漏(Heroku 上的 Django)

java - 单击子节点的子节点,线条消失 - Primefaces 3.4 思维导图

Primefaces Restful 主题菜单标签未呈现

java - JSF 2.0 : wrong language selected after deploying to another server

java - 如何使用 JDBCRealm 获取登录用户的用户名?

java - JSF 与条纹,哪个最好?

file-upload - 基于 Amazon S3 浏览器的上传是否支持输入“多选项”?

java - 类级约束验证错误使 Arjuna TwoPhaseCoordinator.beforeCompletion 失败