Jak nahradit trvalou cestu za input výběr



Dobrý den,tímto skriptem můžu vypsat obsah souboru ale musím vybra soubor přes input type="file", můžete mi poradit prosím jak tam dát přímo cestu na ten soubor? Potřebuji obsah souboru načís a uložit do proměnné. Děkuji za radu.<!doctype html><body><input type="file" onchange="readFile(this)"><script>function readFile(input) { let file = input.files[0]; let reader = new FileReader(); reader.readAsText(file); reader.onload = function() { console.log(reader.result); }; reader.onerror = function() { console.log(reader.error); };}</script></body>
klientským scriptem nemůžeš přistupovat k lokálním souborůmto by byla díra jak prase
<p>jste na správné cestě! jděte na "spravovat zobrazení" a nastavte formát na "obecný soubor", dá vám klikatelný název souboru s odkazem na soubor!</p> <p>tato otázka demonstruje přístup, který vám může pomoci: <a href="https://stackoverflow.com/questions/975652/silent-print-a-embedded-pdf">tichý tisk vloženého pdf</a> </p><p>pro vložení pdf do dokumentu používá značku <code>&lt;embed&gt;</code>:</p><pre><code>&lt;embed type="application/pdf" src="path\_to\_pdf\_document.pdf" id="pdfdocument" width="100%" height="100%" /&gt; </code></pre><p>potom zavoláte metodu <code>.print()</code> na elementu v jazyce javascript, když je načten objekt pdf:</p><pre><code>function printdocument(documentid) { var doc = document.getelementbyid(documentid); //wait until pdf is ready to print if (typeof doc.print  'undefined') { settimeout(function(){printdocument(documentid);}, 1000); } else { doc.print(); } } </code></pre><p>můžete vložit vložený do skrytého iframe a vytisknout ho odtud, což vám umožní bezproblémový zážitek.</p> <p>dlouhé řádky můžete rozdělit pomocí znaku <code>^</code>, pokud si pamatujete, že znak a nový řádek za ním jsou zcela odstraněny. takže, pokud by měl být mezera, kde prolomíte čáru, vložte mezeru. <em> ( <a href="https://stackoverflow.com/a/21000752/157247">více k tomu níže.</a> ) </em></p><p>příklad:</p><pre><code>copy file1.txt file2.txt </code></pre><p>bude psáno jako:</p><pre><code>copy file1.txt^ file2.txt </code></pre> <p>dalším způsobem je volání tlumočníka a předání cesty ke skriptu:</p><pre><code>/bin/sh /path/to/script </code></pre><p>tečka a zdroj jsou ekvivalentní. (úprava: ne, nejsou: jak keithb zdůrazňuje v komentáři k jiné odpovědi, „.“ funguje pouze v shellech souvisejících s bashem, kde „zdroj“ pracuje v shellech souvisejících s bashem i csh.) spustí skript v - místo (jako byste zkopírovali a vložili skript přímo sem). to znamená, že všechny funkce a nelokální proměnné ve skriptu zůstanou. to také znamená, že pokud skript provede cd do adresáře, budete tam stále, když bude hotovo.</p><p>ostatní způsoby spouštění skriptu jej spustí ve vlastní podsíti. proměnné ve skriptu nejsou po dokončení stále naživu. pokud skript změnil adresáře, pak to neovlivní volající prostředí.</p><p>/ cesta/do/skript a/bin/sh skript se mírně liší. skript má obvykle na začátku „shebang“, který vypadá takto:</p><pre><code>#! /bin/bash </code></pre><p>toto je cesta k interpretovi skriptu. pokud specifikuje jiného tlumočníka než vy, když jej provedete, může se chovat odlišně (nebo nemusí fungovat vůbec).</p><p>například skripty perl a ruby skripty začínají (respektive):</p><pre><code>#! /bin/perl </code></pre><p>a</p><pre><code>#! /bin/ruby </code></pre><p>pokud spustíte jeden z těchto skriptů spuštěním <code>/bin/sh script</code>, pak nebudou vůbec fungovat.</p><p>ubuntu ve skutečnosti nepoužívá bash shell, ale velmi podobný, který se nazývá pomlčka. skripty, které vyžadují bash, mohou při volání <code>/bin/sh script</code> protože jste právě zavolali bash skript pomocí pomlčkového tlumočníka.</p><p>další malý rozdíl mezi přímým vyvoláním skriptu a předáním cesty skriptu interpretovi je, že skript musí být označen jako spustitelný, aby jej mohl přímo spustit, ale ne jej spustit předáním cesty interpretovi.</p><p>další drobná variace: můžete předponou libovolného z těchto způsobů spustit skript s evalem, takže můžete mít</p><pre><code>eval sh script eval script eval . script </code></pre><p>a tak dále. ve skutečnosti to nic nezmění, ale myslel jsem, že to zahrnuji pro důkladnost.</p> <p>řekněme, že chcete spustit:</p><pre><code>rm *.txt </code></pre><p>můžete jen spustit:</p><pre><code>echo rm *.txt </code></pre><p>nebo dokonce jen:</p><pre><code>echo *.txt </code></pre><p>abyste viděli, které soubory <code>rm</code> by se smazaly, protože to shell rozšiřuje <code>*.txt</code>, ne <code>rm</code>.</p><p>jediný čas, kdy vám to nepomůže, je <code>rm -r</code>.</p><p>pokud chcete odstranit soubory a adresáře rekurzivně, můžete použít <code>find</code> místo <code>rm -r</code>, např.</p><pre><code>find . -name "*.txt" -print </code></pre><p>pak pokud to dělá, co chcete, změňte <code>-print</code> to <code>-delete</code>:</p><pre><code>find . -name "*.txt" -delete </code></pre> <p>pokud musíte zachytit všechny výstupy příkazů, můžete použít dávku jako je tato:</p><pre><code>@echo off if not "%1"=="" goto addv set var= for /f %%i in ('dir *.txt /b /o:d') do call %0 %%i set var goto end :addv set var=%var%!%1 :end </code></pre><p>všechny výstupní linky jsou uloženy v var oddělené znakem &quot;!&quot;.</p><p>@ john: existuje pro to nějaké praktické využití? myslím, že byste měli sledovat powershell nebo jakýkoli jiný programovací jazyk, který je schopen provádět skriptovací úlohy snadno (python, perl, php, ruby)</p> <p>vaše příkazy se pokouší umístit nový dokument do <strong>root</strong> (<code>/</code>) vašeho stroje. chcete je přenést do adresáře <strong>home</strong> (protože nemáte oprávnění k zápisu do <code>/</code>). pokud je cesta k vašemu domu něco jako <code>/home/erez</code> zkuste následující:</p><pre><code>scp my\_file.txt user\_id@server:/home/erez/ </code></pre><p>cesta k domovskému adresáři můžete nahradit zkratkou <code>~/</code>, takže následující bude mít stejný účinek:</p><pre><code>scp my\_file.txt user\_id@server:~/ </code></pre><p>cestu můžete dokonce vynechat úplně na vzdálené straně; to znamená váš domovský adresář.</p><pre><code>scp my\_file.txt user\_id@server: </code></pre><p>to znamená, že zkopírujete soubor na plochu, který chcete přenést do <code>/home/erez/desktop/</code>:</p><pre><code>scp my\_file.txt user\_id@server:/home/erez/desktop/ </code></pre><p>nebo pomocí zkratky:</p><pre><code>scp my\_file.txt user\_id@server:~/desktop/ </code></pre><p>nebo pomocí relativní cesty na vzdálené straně, která je interpretována vzhledem k domovskému adresáři:</p><pre><code>scp my\_file.txt user\_id@server:desktop/ </code></pre><hr><h2>upravit:</h2><p>jak již bylo uvedeno @ckhan, musíte také zaměnit argumenty, musí to být</p><pre><code>scp from to </code></pre><p>pokud tedy chcete soubor zkopírovat <code>my\_file.txt</code> ze serveru <code>user\_id@server</code> na plochu byste měli vyzkoušet následující:</p><pre><code>scp user\_id@server:/path/to/my\_file.txt ~/desktop/ </code></pre><p>pokud soubor <code>my\_file.txt</code> se nachází ve vašem domovském adresáři na serveru, můžete znovu použít zkratku:</p><pre><code>scp user\_id@server:~/my\_file.txt ~/desktop/ </code></pre> <p>zkuste to jako univerzální řešení:</p><pre class="lang-none prettyprint-override"><code>dir="$(cd "$(dirname "$0")" &amp;&amp; pwd)" </code></pre><p>v konkrétním případě následujících symbolických odkazů můžete toto provést také:</p><pre class="lang-none prettyprint-override"><code>dir="$(dirname "$(readlink -f "$0")")" </code></pre> <p>to je způsob, jak zjistit, zda v této složce existují nějaké soubory xml, ano.</p><p>chcete-li zkontrolovat konkrétní soubory, použijte <a href="http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx"><code>file.exists(path)</code></a> , které vrátí logickou hodnotu, která indikuje, zda soubor v souboru <code>path</code> existuje.</p> <p>tyhle jsou trochu staré, ale byly vysoké v žebříčku google, takže jsem si myslel, že bych hodil odpověď, kterou jsem našel <a href="https://stackoverflow.com/questions/8588818/chrome-pdf-display-duplicate-headers-received-from-the-server-fixed">chrome, pdf displej, duplicitní záhlaví přijaté ze serveru</a> </p><p>můj problém byl také v tom, že název souboru obsahoval čárky. vyměňte čárky za jejich odstranění a měli byste být v pořádku. moje funkce pro vytvoření platného názvu souboru je níže.</p><pre><code> public static string makevalidfilename(string name) { string invalidchars = regex.escape(new string(system.io.path.getinvalidfilenamechars())); string invalidrestr = string.format(@"[{0}]+", invalidchars); string replace = regex.replace(name, invalidrestr, "\_").replace(";", "").replace(",", ""); return replace; } </code></pre>