2

重複の可能性:
HTMLページのディレクトリチューザ
自分のコードでGoogle Chrome 11のフォルダのアップロード機能を使用するにはどうすればよいですか?

ユーザーにボタンをクリックしてもらいたいのですが、ファイル選択ダイアログが表示されますが、ユーザーはディレクトリしか選択できません。選択すると、ディレクトリパスを文字列として取得する必要があります。

HTML5ファイルAPIを見ましたが、選択できるディレクトリのみを制限する方法がわかりません。また、ファイルのパスの属性が表示されません。

Chromeのみをサポートする必要があります

4

1 に答える 1

0

ブレークスルー!これらはいくつかの実験的な機能を使用しており、これが実際に機能するかどうかはわかりません。まず、ダミーファイルをダウンロードして、ダウンロードディレクトリのパスを見つけましょう。

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,"/");
    });
});

この後、私はあなたの拡張を完了するための2つの方法を期待しています:

  1. (少し難しい)ダウンロードディレクトリができたので、file:///urlにアクセスしましょう。"file://*"マニフェストファイルに権限を追加します。chrome://extensionsユーザーに移動して拡張機能を見つけ、その横にある[file://URLへのアクセスを許可する]にチェックマークを付けるように指示する必要があります。isAllowedFileSchemeAccessを使用して、ユーザーがこれを行ったことを確認できます。

    OSに基づいて、file:///home/またはに移動して試してください。file:///C:/コンピュータ内のファイルのディレクトリが表示されます。XMLHttpRequestを使用してこれらのファイルのHTMLを取得できる可能性があると思います(ヒント:usexhr.responseType = "document")。これを解析して、フォルダーを選択するための独自のユーザーインターフェイスを構築できます。(フォルダを追加するには、追加するパスにファイルをダウンロードするだけです。)

  2. chrome.experimental.downloads.downloadまた、 withを呼び出すだけでsaveAs: true、ユーザーが保存先のフォルダーに一時ファイルをダウンロードできるようにすることもできます。次に、ファイル名を最後から削除し、ダウンロードパスを最初から削除して、将来ファイルを保存できる相対パスを取得します。

私はあなたの拡張機能がどうなるかを見てとても興奮しています。幸運を!

于 2012-05-28T17:28:08.180 に答える