jqueryなしでjavascriptを使用して現在のディレクトリからテキストファイル(text1.txt)を読み取る方法。次のコードを試しました。
var file = "text1.txt";
var reader = new FileReader();
var result = reader.readAsText(file);
console.log(result);
jqueryなしでjavascriptを使用して現在のディレクトリからテキストファイル(text1.txt)を読み取る方法。次のコードを試しました。
var file = "text1.txt";
var reader = new FileReader();
var result = reader.readAsText(file);
console.log(result);
FileReader APIは通常、を介して選択されたファイルを読み取るために使用されます<input type="file">
。任意のファイルを読み取ることはできません。このreadAsText
メソッドは、ファイル名を含む文字列ではなく、BlobまたはFileオブジェクトで受信することを想定しています。
HTMLドキュメントの兄弟であるファイルを読み取るには、XMLHttpRequestを使用します。これは、ドキュメントをHTTP(S)経由でロードする場合に確実に機能します。(URIを介して)ローカルHTMLドキュメントを使用している場合file:
、多くのブラウザのセキュリティ制限により、ドキュメントが機能しなくなります(代わりに、ローカルWebサーバーを実行する必要があります)。
オプションA、ユースケースにより、httpまたはphpサーバーを使用できなくなります。 スクリプトインクルードを使用して、ローカルコンテンツを変数としてJavaScriptに含めることができます。ディレクトリからファイルとしてページをローカルで開いている場合、これがWebページにローカルコンテンツを含める唯一の方法です。
ローカルコンテンツを含めるには、これを他のスクリプトタグの上に配置します。
<script src="text1.txt"></script>
text1.txtファイルを編集して、すべてのコンテンツを変数に割り当てます。
gbl_text=`...contents of my text file...
...more contents...
...and so on....
`
たとえば、スクリプトを使用してこのインクルードファイルを作成できます(チルダ〜キーの下にある `チェックマークを使用):
echo -n "var gbl_text=\`" > text1.txt
cat your-original-file.txt >> text1.txt
echo "\`" >> text1.txt
次に、必要に応じてJavaScriptでgbl_text変数を使用します...
function dosomething()
{
if (typeof(gbl_text)=='undefined'){
setTimeout('dosomething()',500) //call back until defined
}else{
console.log(gbl_text)
}
}
オプションB、ユースケースでは、php-cli組み込みサーバーを使用できます。 php-cliを実行できる場合は、組み込みのphp Webサーバーでページを開き、php呼び出しを使用してローカルコンテンツの読み取りと書き込みを行うことができます。Linuxにphpをインストールして使用するには、
sudo apt install php7.0-cli
#To use the php built-in webserver, run:
php -S localhost:8000 -t /path/to/your/content
したがって、htmlをファイルとして開く代わりに、httpWebページとして開きます。
firefox http://localhost:8000/mypage.html
#or browser of choice
これで、ローカルWebページはphpをサポートする実際の(ローカル)httpサーバーによって提供され、ローカルファイルを操作できます。
これは、jQueryとphpを使用してローカルファイルを読み書きする方法を示す簡単な例です。jQuery(jQuery.comを参照)をダウンロードして、htmlファイルに含めます。
dofile.phpの内容:
<?php
$dowhat = $_REQUEST['dowhat'];
if ($dowhat=='save'){
$myvar = $_REQUEST['myvar'];
file_put_contents('myfile', $myvar);
}elseif($dowhat=='read'){
$myvar=file_get_contents('myfile');
echo $myvar;
}
?>
mypage.htmlの内容:
<script src='jquery-3.2.1.js';></script>
<!--make sure the filename matches the jQuery you use-->
<script>
function savevar(){
var myvar=document.getElementById('mytxt').value
var path="dofile.php?dowhat=save&myvar="+myvar
$.get(path, function(data){
console.log("saved ...\n"+myvar)
alert("saved ...\n"+myvar)
});
}
function clearbox(){
document.getElementById('mytxt').value='reading file...'
setTimeout('getvar()',1000)
}
function getvar(){
var path="dofile.php?dowhat=read"
$.get(path, function(data){
console.log(data);
document.getElementById('mytxt').value=data
/*do other things with data here*/;
});
}
</script>
<html>
Type something in the text box.<br>
Use the Read and Write buttons to verify <br>
text is saved and read back.<br>
<input id='mytxt' value='type text here' onclick=document.getElementById('mytxt').value=''><br>
<input type='button' value='Save' onclick=savevar() ><input type='button' value='Read' onclick=clearbox() >
</html>
2種類の読み取りファイルを区別してください。
<input type="file">
小さなiframeを作成します。そこにファイルをロードします。iframe.innerHTMLで読む