Possible Duplicate:
Directory Chooser in HTML page
How do I use Google Chrome 11's Upload Folder feature in my own code?
我希望用户单击一个按钮,然后有一个文件选择对话框,但是用户只能选择目录,选择后,我需要以字符串形式获取目录路径。
我查看了HTML5 File API,但无法了解如何限制只能选择目录,也看不到文件路径的属性。
只需要支持Chrome
最佳答案
突破!这些使用了一些实验性功能,我不知道这是否真的有效。首先,让我们通过下载一个虚拟文件来找到下载目录的路径:
chrome.experimental.downloads.download({url:"data:text/plain,",filename:"~dummy.tmp"},
function (downloadId, error) {
if (error) { /* do stuff */ }
// get the DownloadItem object
chrome.experimental.downloads.search({downloadId: downloadId}, function(items) {
// this is the absolute filesystem location of where it was downloaded!
var filename = items[0].filename;
// if we remove dummy.tmp from the end we have the downloads directory!
// also in case it's windows replace backslashes with forward slashes.
var downloads_directory = filename.replace(/~dummy.tmp$/i,"").replace(/\\/g,"/");
});
});
在此之后,我预计有两种完成扩展的方法:
(稍微难一点)现在我们有了downloads目录,让我们可以访问文件:/// url。将
"file://*"
权限添加到清单文件。您需要告诉用户导航到chrome://extensions
,找到您的扩展名,然后在其旁边的“允许访问file:// URL”旁打钩。您可以通过isAllowedFileSchemeAccess检查以确保用户已完成此操作。根据您的操作系统,转到
file:///home/
或file:///C:/
进行尝试。它应该显示您计算机中文件的目录。我相信可能可以使用XMLHttpRequest获取这些文件的HTML(提示:use xhr.responseType = "document"
),您可以对其进行解析以构建自己的用于选择文件夹的用户界面! (要添加文件夹,只需将文件下载到您要添加的路径即可。)您也可以简单地用
chrome.experimental.downloads.download
调用saveAs: true
来使用户将临时文件下载到要保存到的文件夹中。然后,从头开始删除文件名,从头开始删除下载路径,以获取相对路径,以后您可以将其保存到其中!我很高兴看到您的扩展程序结果如何。祝好运!
关于javascript - JavaScript选择目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10776156/