jxbrowser - 如何使用 JXBrowser 上传整个目录,而不仅仅是多个文件
问题描述
自 2011 年以来,Chrome 就支持 html 'input' 元素的非标准 'webkitdirectory' 属性,并且效果很好。代码笔示例
我想运行 jxbrower。截至 2018 年 5 月 21 日星期一的最新版本基于 Chromium 64.0.3282.24(2017 年 12 月 12 日),但不支持此属性。
我错过了什么?任何建议将不胜感激。
<html>
<div>
<label for="uploaddir" style="width: 600px; background: #ccc;border: 1px solid black;">Choose directory to upload</label>
<input type="file" id="uploaddir" webkitdirectory onchange="updateImageDisplay()" style="opacity:0;">
</div>
<div>
<ul id="listing"></ul>
</div>
</html>
<script>
var input = document.getElementById('uploaddir');
var output = document.getElementById('listing');
function updateImageDisplay() {
while (output.firstChild) {
output.removeChild(output.firstChild);
}
var curFiles = input.files;
for (let i = 0; i < curFiles.length; i++) {
const item = document.createElement('li');
item.innerHTML = `${curFiles[i].webkitRelativePath} (${curFiles[i].size} bytes)`;
output.appendChild(item);
}
}
</script>
解决方案
JxBrowser 可以上传整个目录。在您的情况下可能有问题的是未配置为选择目录的文件选择器对话框。
我做了一个简单的例子来演示如何在 swing 中配置文件选择器对话框:
browser.setDialogHandler(new DefaultDialogHandler(view) {
@Override
public CloseStatus onFileChooser(FileChooserParams params) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if (fileChooser.showOpenDialog(view) == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
params.setSelectedFiles(selectedFile.getAbsolutePath());
return CloseStatus.OK;
}
return CloseStatus.CANCEL;
}
});
推荐阅读
- python - 将新列添加到 python 中的数据框时出现错误“NameError: name 'newaxis' is not defined”
- bash - bash shell 脚本中的 -n 运算符代表什么?
- javascript - 我应该怎么做才能从 API 调用中呈现数组对象值的总和
- c - C - 调试断言失败:_CrtIsValidHeapPointer(block)
- python - 程序未进入嵌套在 while 循环中的 for 循环
- python - 我的代码只循环到某个点,然后忽略 Python,字典
- typescript - 如何从响应中获取中间件上下文?
- javascript - 带有渲染模板的烧瓶视频流
- firebase - 有没有办法通过 sdk 检查 Cloud Firestore 上的读/写次数?
- javascript - 如何在没有 sumbit 的情况下设置会话输入?