【发布时间】:2016-10-18 09:40:25
【问题描述】:
我目前正在使用 Primefaces 文件上传组件的拖放功能。它工作正常,但我想要的是直接通过将文件拖动到我的页面中的任何位置来上传文件,而无需单击按钮。
我试过了:
$('.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 组件的情况下以编程方式提交文件?
【问题讨论】:
-
你以前试过这个SO answer吗?
-
是的,但它不起作用。我不确定这个解决方案是否仍然适用于 Primefaces 6.0。
-
我不确定它是否满足您的需求,但有这个东西:Dropzone
-
stackoverflow.com/q/38018632 确实应该完全回答您的问题。这是真的?上面sunofkyuss的评论中提到了,但您没有对此发表任何反馈。
-
我还没有机会测试它,但答案看起来很有希望。
标签: jsf file-upload primefaces