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/

10-12 00:06
查看更多