私がしたいこと:
テスト目的で Chrome 拡張機能を作成したいと考えています。そして、その拡張子は、ローカルハード ドライブのディレクトリとファイルにアクセスできる必要があります。
私がそれをした方法:
ファイルfile:///*
で のアクセス許可を要求しました。manifest.json
次に、チェックボックスAllow access to file URLs
がオンになっていることを確認しました。次に、ファイルの XHR を作成しました。
var xhr = new XMLHttpRequest();
xhr.open("GET", 'file://c:/dir/file.name', true);
xhr.onload = function(e) {
console.log('response: ', xhr.response);
}
xhr.send();
...そしてディレクトリ全体のXHR:
var xhr = new XMLHttpRequest();
xhr.open("GET", 'file://c:/dir/', true);
xhr.onload = function(e) {
console.log('response: ', xhr.response);
}
xhr.send();
...そしてファイルシステム全体について:
var xhr = new XMLHttpRequest();
xhr.open("GET", 'file:///', true);
xhr.onload = function(e) {
console.log('response: ', xhr.response);
}
xhr.send();
どうしたの:
- ファイル要求に対して適切な応答を得ることができました。
- ディレクトリをリクエストすると、Chrome のデフォルトの人間が読めるディレクトリ概要のソース コードを受け取りました。
.
<html>
<head>
<script>
[...]
</script>
<style>
[...]
</style>
<title id="title"></title>
</head>
<body>
<div id="listingParsingErrorBox" i18n-values=".innerHTML:listingParsingErrorBoxText"></div>
<span id="parentDirText" style="display:none" i18n-content="parentDirText"></span>
<h1 id="header" i18n-content="header"></h1>
<table id="table">
<tr class="header">
<td i18n-content="headerName"></td>
<td class="detailsColumn" i18n-content="headerSize"></td>
<td class="detailsColumn" i18n-content="headerDateModified"></td>
</tr>
</table>
</body>
</html>
[...]
<script>start("C:\\dir\\");</script>
<script>addRow("..","..",1,"0 B","11/11/11 11:11:11 AM");</script>
<script>addRow("file.name","file.name",0,"4.9 kB","11/11/11 11:11:11 PM");</script>
- ファイルシステム全体をリクエストすると、エラーが発生しました。
私の質問:
単純なファイルを読み取ることができます。しかし、私の拡張機能は、どのようにしてディレクトリやファイルシステム全体の機械可読な概要を得ることができるのでしょうか? ありがとう。
編集: FileSystem API がサンドボックス化された にアクセスすることを意図していることは知っていますが、filesystem://
Chrome では拡張機能が にアクセスすることも許可されている可能性がありますfile://
。Chrome拡張機能からのアクセスに関するドキュメントが見つからなかっfile://
たので、推測できます。