Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: eMeNee 23. 03. 2021, 12:49:10

Název: JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 12:49:10

Dobrý den,
potřeboval bych do lokálních www stránek (bez nutnosti je ukládat na server) vložit JavaScript, kterými po zadání hodnoty do formuláře vypíše funkcí alert() řádek odpovídající zadané hodnotě v textovém souboru data.txt, který je uložený lokálně v adresáři DATA. Mohl by mi s tím někdo poradit?

zdrojový kód www stránky:

Kód: [Vybrat]
<?xml version="1.0" encoding="utf-8"?>
<head>
<title>Výběr velikosti</title>
<script type="text/javascript">

function velikost(f) {

velikost se rovná vybranému řádku (f.volba.value) v textovém souboru data.txt v adresáři DATA

alert (velikost);
}

</script>
</head>
<html>
<body>
<form>
<H1>Vyber velikost (1,2,3)</H1>
<input type="text" name="volba" onChange="velikost(form);"/>
</form>
</body>
</html>



obsah texťáku DATA/data.txt:

Kód: [Vybrat]
malý
velký
největší

Potřebuju doplnit funkci velikost(f) tak, aby po zadání např. 2 do formuláře se funkcí alert() vypsal 2.řádek souboru tj. velký

Děkuji moc
Změnit zprávu
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: A.P.Hacker 23. 03. 2021, 13:02:05
podle me tohle bez vyberu souboru uzivatelem pomoci upload file formulare nejde.
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Kit 23. 03. 2021, 13:18:21
Je to záměrně uděláno tak, aby to nešlo.

Alternativou by mohlo být ukládání do cookies nebo do localStorage:
https://www.w3schools.com/js/js_cookies.asp (https://www.w3schools.com/js/js_cookies.asp)
https://www.w3schools.com/jsref/prop_win_localstorage.asp (https://www.w3schools.com/jsref/prop_win_localstorage.asp)
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Client-side_storage (https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Client-side_storage)
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 14:08:37
podle me tohle bez vyberu souboru uzivatelem pomoci upload file formulare nejde.

A pokud chci použít ten výběr souboru uživatelem tak by se to mělo udělat jak?

Mám přidat do formuláře:
Kód: [Vybrat]
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
A nebo jsem na špatné cestě?
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 14:14:51
podle me tohle bez vyberu souboru uzivatelem pomoci upload file formulare nejde.

A nebo to mám chápat, že bez toho, aniž bych to dal na server tuto úlohu nevyřeším?
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Wangarad 23. 03. 2021, 14:19:35
Bez toho uploadu na server to nedas. Nie je to mozne.
Mas moznost ten subor ulozit na server a nasledne spracovat v tom pripade chod cestov
Citace
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
ale ak nevies ako ho nahrat a spracovat tak doporucujem podobne ako  KIT ale skorej
https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications
https://web.dev/read-files/#toc-reading-files

Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 14:26:36
https://www.w3schools.com/jsref/prop_win_localstorage.asp (https://www.w3schools.com/jsref/prop_win_localstorage.asp)

Pokud bych se vydal cestou localstorage, tak ty data jsou fyzicky uloženy kde?
Je možné je v texťáku editovat?
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Wangarad 23. 03. 2021, 14:27:54
Ved to tam mas napisane. Otvoril a precital si si ten link?
Definition and Usage
The localStorage and sessionStorage properties allow to save key/value pairs in a web browser.

The localStorage object stores data with no expiration date. The data will not be deleted when the browser is closed, and will be available the next day, week, or year.

The localStorage property is read-only.

Tip: Also look at the sessionStorage property which stores data for one session (data is lost when the browser tab is closed).
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 14:33:28
Ved to tam mas napisane. Otvoril a precital si si ten link?
Definition and Usage
The localStorage and sessionStorage properties allow to save key/value pairs in a web browser.

The localStorage object stores data with no expiration date. The data will not be deleted when the browser is closed, and will be available the next day, week, or year.

The localStorage property is read-only.

Tip: Also look at the sessionStorage property which stores data for one session (data is lost when the browser tab is closed).

Pardón, angličtinu moc neovládám.
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Wangarad 23. 03. 2021, 14:39:29
Preco mam pocit ze chces rovno hotove riesenie?

Ukaz kus kodu co si uz napisal resp. na com si za zasekol a budem rad ak budem vediet pomoct. Ak mas len to co si napisal hore tak vela stastia a doporucujem si nastudovat jakpsatweb pripadne nieaky ten tutorial.
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 14:50:07
Preco mam pocit ze chces rovno hotove riesenie?

Ukaz kus kodu co si uz napisal resp. na com si za zasekol a budem rad ak budem vediet pomoct. Ak mas len to co si napisal hore tak vela stastia a doporucujem si nastudovat jakpsatweb pripadne nieaky ten tutorial.

Potřeboval jsem nakopnout.


Jen pro ujasnění jestli jsem tu localstorage pochopil správně:
1) každá stránka má svou localstorage
2) každý prohlížeč má svou localstorage
3) data jsou přítomné do té doby než se smažou
(localStorage.removeItem("nazev-polozky"); - jedna položka
localStorage.clear(); - celá paměť)
4) pokud dojde k aktualizaci prohlížeče, systému zůstanou data v localStorage nepoškozená?

Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Filip Jirsák 23. 03. 2021, 14:51:54
Bez toho uploadu na server to nedas. Nie je to mozne.
Mas moznost ten subor ulozit na server a nasledne spracovat v tom pripade chod cestov
Soubor vybraný uživatelem lze zpracovat i v JavaScriptu, není nutné jej odesílat na server. Nicméně nedoporučoval bych HTML soubor otvírat z disku – je tam spousta omezení. Pokud to chcete lokálně, je spousta jednoduchých webových serverů, přes které bych to spustil, aby to běželo alespoň na http://localhost:8080 (nebo jiném portu).
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 15:39:48
Pokud to chcete lokálně, je spousta jednoduchých webových serverů, přes které bych to spustil

Nějaké doporučení na konkrétní, případně odkaz, kde bych se o takových serverech něco dozvěděl (nejlépe v češtině).
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Wangarad 23. 03. 2021, 16:00:25
vies co skus google.cz a napisat tam co chces. Sam zbadas ci vlastne rozumies tomu co chces.
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Filip Jirsák 23. 03. 2021, 16:26:41
Nějaké doporučení na konkrétní, případně odkaz, kde bych se o takových serverech něco dozvěděl (nejlépe v češtině).
V češtině mne nic nenapadá… Hodně serverů je pod node.js, např. Web Dev Server (https://modern-web.dev/docs/dev-server/overview/), Mozilla MDN má popsané spuštění serveru v Pythonu: How do you set up a local testing server? (https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server). Caddy (https://caddyserver.com) je profi server, ale když ho v nějakém adresáři spustíte příkazem caddy file-server, spustí nad tím adresářem web server (https://caddyserver.com/docs/quick-starts/static-files).
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 23. 03. 2021, 19:51:15
A pokud bych chtěl naopak některé hodnoty proměnných z lokální www stránky uložit do texťáku v lokálním adresáři, tak by to šlo a nebo taky ne?
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: ZAJDAN 23. 03. 2021, 20:05:33
Obecně by jakákoliv manipulace s daty na disku neměla být pomocí JavaScriptu možná, pač to by byl ráj pro záškodníky.
Pokud to jde, tak určitě ne normálním způsobem.
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Filip Jirsák 23. 03. 2021, 20:15:57
A pokud bych chtěl naopak některé hodnoty proměnných z lokální www stránky uložit do texťáku v lokálním adresáři, tak by to šlo a nebo taky ne?
Jedině přes download souboru nebo přes FileSystemAPI (https://developer.mozilla.org/en-US/docs/Web/API/FileSystem) (které ale ještě nemá v prohlížečích plnou podporu).

Bylo by jednodušší, kdybyste napsal, co řešíte za problém, než takhle náhodně střílet různé technologie a zkoušet, zda něco trefíte.
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Tomas-T 23. 03. 2021, 22:14:40
podle me tohle bez vyberu souboru uzivatelem pomoci upload file formulare nejde.

A pokud chci použít ten výběr souboru uživatelem tak by se to mělo udělat jak?

Mám přidat do formuláře:
Kód: [Vybrat]
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
A nebo jsem na špatné cestě?

Tohle by mělo dělat to co chceš = vypíše ti druhý řádek textového souboru, který mu z disku vybereš:
Kód: [Vybrat]
<html>
<input id="f" type="file">
<script>
document.getElementById("f").addEventListener("change", function(event) {
var reader = new FileReader();
reader.onload = function(event) {
alert((event.target.result.split("\n"))[1]);
};
reader.readAsText(this.files[0]);
});
</script>
</html>
(možná trochu minimalistické, ale v Chorme, FF i Edge to bez problémů funguje)
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Tomas-T 23. 03. 2021, 22:16:15
nic
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: Tomas-T 23. 03. 2021, 22:24:26
ještě drobná úprava - přidání výběru řádku k zobrazení.
Kód: [Vybrat]
<html>
line <input id="r" type="text" value="1"><br>
<input id="f" type="file">

<script>
document.getElementById("f").addEventListener("change", function(event) {
var reader = new FileReader();
reader.onload = function(event) {
alert((event.target.result.split("\n"))[(document.getElementById("r").value - 1)]);
};
reader.readAsText(this.files[0]);
});
</script>
</html>
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: A.P.Hacker 23. 03. 2021, 22:59:15
podle me tohle bez vyberu souboru uzivatelem pomoci upload file formulare nejde.

A nebo to mám chápat, že bez toho, aniž bych to dal na server tuto úlohu nevyřeším?

soubor z file input muzete cist v browseru, prectete si dokumentaci k FileReader API

Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: A.P.Hacker 23. 03. 2021, 23:04:34
Bez toho uploadu na server to nedas. Nie je to mozne.

na server nemusi nic posilat, ale uzivatel musi vybrat soubor
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: eMeNee 24. 03. 2021, 10:38:25
Díky moc všem za rady, toto mi zatím stačí. Chvíli mi zabere, než se tím prokoušu a aplikuju. Jsem pouhý hobby „programátor“, vše dělám ve svém volném čase, angličtina není má silná stránka a google translátor není vždy ideální způsob překladu. Nic méně vím, kterým směrem se můžu vydat.

 

Řeším úpravu různých textových výstupů, které obsahují různé hodnoty, které je potřeba z daného texťáku vypreparovat, následně z nich matematickými postupy vypočíst hodnoty jiné a ty poté nějakým způsobem dát do textového výstupu.

 

Potřebuji tento postup aplikovat i v práci, takže jsem omezen nainstalovanými programy a nemožnosti připojit se v práci k internetu. Proto jsem takovéto věci řešil skripty přes příkazový řádek CMD (případně ryze domácí věci v Linuxu v Bashi). CMD řádek je sice silný nástroj, ale ne vše v něm jde jednoduše provézt. Navíc iterace s uživatelem je horší – pouze formou textových zadávání. Proto jsem se začal orientovat na www stránky, v kterých jsem schopný formou formulářů vytvořit poměrně přehledné uživatelské rozhraní a pomocí javascriptu provádět výpočty hodnot. Ale nevěděl jsem, jak mám aplikovat načtení těch vstupních dat a následně vypočtené data z www stránky vyexportovat.

 

Myslím si, že mnohé rady mi velice pomůžou.

 

Ještě jednou děkuji
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: rrrado1 24. 03. 2021, 18:55:17
Soubor vybraný uživatelem lze zpracovat i v JavaScriptu, není nutné jej odesílat na server. Nicméně nedoporučoval bych HTML soubor otvírat z disku – je tam spousta omezení. Pokud to chcete lokálně, je spousta jednoduchých webových serverů, přes které bych to spustil, aby to běželo alespoň na http://localhost:8080 (nebo jiném portu).

Myslím že by to šlo aj bez web serveru pri lokálnom použití napr. pri použití chrome s prepínačom "--allow-file-access-from-files" - napriklad chrome --allow-file-access-from-files file:///c:/test/test.html
Název: Re:JavaScript načtení proměnné z lokálního souboru
Přispěvatel: qelurg 26. 03. 2021, 21:27:15
JavaScript není dobrý nástroj na úpravu textových souborů. Použij Python. Jeho výhodou je, že je přiložen k řadě programů, třeba Gimpu nebo LibreOffice, takže ho najdeš běžně i v restriktivním firemním prostředí, kde ti nedovolí jen tak si něco nainstalovat.