2017-07-31 60 views
0

我使用基于jQuery-File-Upload的Primefaces(JSF框架)中的fileUpload。我试图让这个组件支持拖动&拖放文件夹,这要感谢Firefox或Chrome的新File API。 https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory#Example到目前为止,我已经能够通过passthrough属性来实现它。检索服务器端上传的relativePath文件

有趣的功能之一是“webkitRelativePath”,它允许知道上传文件的相对路径。

我在想如何在服务器端检索这个信息,所以我可以用这个新信息创建一个对象。

感谢您的帮助。

+0

如果你有它的客户端,你总是可以尝试将它'附加'到服务器上ajax调用作为参数。不知道这是否有效,但这是一种可能性。 – Kukeltje

回答

0

嗯,我刚读fileupload.js他:

_initXHRData: function (options) { 
    ... 
    formData.append(
    ($.type(options.paramName) === 'array' && 
      options.paramName[index]) || paramName, 
      file, 
      file.uploadName || file.name 
    ); 
    ... 
} 

(含文件webKitRelativePath)

所以我猜这个信息已经传递给服务器,你不觉得吗?因为我使用Servlet 3.0,所以我应该可以从Part对象中取回它,手指交叉...

+0

我使用了一个技巧,而不是'file.uploadName || file.name'我写了'file.webkitRelativePath || file.name'因为uploadName似乎不是有效的属性,而webkitRelativePath“是”(不是标准功能) – Rapster

+0

另一个诀窍是向FormData添加一个新的参数,并使关键词后缀为“-webkitRelativePath”,然后服务器端,你有一个尝试,如果钥匙存在 – Rapster

+0

有一个文件谈论这实际上https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data,但它在JSF中看起来并不那么简单 – Rapster