Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Textové súbory na stiahnutie

Aktivity
Avatar
samo007
Tvůrce
Avatar
samo007:29.9.2012 22:15

Ahojte, existuje nejaký hmtl tag na ukladanie textových súborov? (Ak totiž kliknem na odkaz nieco.ini, tak mi to neuloží, ale zobrazí priamo v prehliadači)

 
Odpovědět
29.9.2012 22:15
Avatar
matesax
Tvůrce
Avatar
Odpovídá na samo007
matesax:29.9.2012 22:34

Uložit se to dá - Ctrl + S - po otevření / po kliknutí pravým na odkaz - Uložit cíl jako

Editováno 29.9.2012 22:35
 
Nahoru Odpovědět
29.9.2012 22:34
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:29.9.2012 22:35

To se dělá nastavením v .htaccess - často se to obchází přes PHP.

Nahoru Odpovědět
29.9.2012 22:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
user
Tvůrce
Avatar
Odpovídá na samo007
user:29.9.2012 22:35

Myslím, že to spočívá v přidání několika hlaviček, před stahovaný soubor...
Něco ve stylu:

function download($path)
{

      header("Content-Description: File Transfer");
      header("Content-Type: application/force-download");
      header("Content-Disposition: attachment; filename=\"$path\"");

      readfile ($path);
}

snad to mám dobře, strašně dlouho jsem to nepotřeboval...
ps.: Možná existuje elegantnější řešení... ,nevím
 
Nahoru Odpovědět
29.9.2012 22:35
Avatar
user
Tvůrce
Avatar
user:29.9.2012 22:37

aha, no vidiš :) , další varianta...

 
Nahoru Odpovědět
29.9.2012 22:37
Avatar
samo007
Tvůrce
Avatar
Odpovídá na matesax
samo007:29.9.2012 22:40

Áno, to viem, ale ja chcem odkaz na stiahnutie dať do stránky (aby netrvalo využívať to, čo si napísal

 
Nahoru Odpovědět
29.9.2012 22:40
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:29.9.2012 22:40

Mohol by si to upresniť?

 
Nahoru Odpovědět
29.9.2012 22:40
Avatar
samo007
Tvůrce
Avatar
Odpovídá na user
samo007:29.9.2012 22:42

Prepáč, ale s php veľmi neviem pracovať. Ako teda zadám cestu k súboru?

 
Nahoru Odpovědět
29.9.2012 22:42
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:29.9.2012 22:49

Už to sem poslal user. Jenom doplním, že proměnná $path v "Content-Disposition" a "readfile" může být pokaždé jiná. Můžu tak nabídnout soubor pod jiným názvem, než jak ho mám na disku. Případně na disku vůbec nemusí existovat, můžu ho třeba vytáhnout jako záznam z databáze.

S tím .htaccess se mi to nechce hledat. Jen se u souborů podle masky změní MIME. Má to smysl, pokud takových souborů je víc.

Už jsem to našel:

<FilesMatch "\.(ini|pdf)$"
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>
Editováno 29.9.2012 22:52
Nahoru Odpovědět
29.9.2012 22:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
user
Tvůrce
Avatar
Odpovídá na samo007
user:29.9.2012 23:00

v odkazu, místo cesty k souboru uvedeš script, který cestu zpracuje... cestu souboru předáš fci jako parametr...

 
Nahoru Odpovědět
29.9.2012 23:00
Avatar
samo007
Tvůrce
Avatar
Odpovídá na user
samo007:29.9.2012 23:05

Ok, pozriem sa na to zajtra.

 
Nahoru Odpovědět
29.9.2012 23:05
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na samo007
David Hartinger:30.9.2012 8:34

Myslím, že samo chce něco jiného, kód výše vyvolá stažení. Můžeš si v PHP zavolat něco jako

file_get_contents($cesta_k_souboru);

Výsledkem je načtení obsahu souboru, který stačí vyechovat. Možná by to šlo fcí readfile, co to rovnou vypíše. Každopádně pozor na parametr funkce, nemělo by se stát, aby ho mohl zadat uživatel, je to nebezpečné.

Editováno 30.9.2012 8:36
Nahoru Odpovědět
30.9.2012 8:34
You are the greatest project you will ever work on.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na David Hartinger
samo007:30.9.2012 9:25

Ďakujem, ale ja som mal namysli niečo ako mi poslal user :)

 
Nahoru Odpovědět
30.9.2012 9:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:30.9.2012 9:28

Ještě před funkci readfile() musíš poslat ty 3 hlavičky, jinak se ten soubor přímo zobrazí v prohlížeči a to samo007 nechce.

Ohledně bezpečnosti souhlasím. Je nepřípustné, aby byl přímo použit parametr od uživatele. Sám jsem to v jednom projektu tak potřeboval a musel jsem si dát dost velký pozor na to, aby uživatel nelezl tam kam nemá. Daleko bezpečnější je umístit obsah souboru do databáze. Zejména pokud uživatel takové soubory může i nahrávat.

Nahoru Odpovědět
30.9.2012 9:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
30.9.2012 9:29
You are the greatest project you will ever work on.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:30.9.2012 9:50

Len keby som vedel s tými databázami pracovať :/ Je to dosť zložité, naučiť sa s nimi pracovať. Teda aspoň pre mňa :)

 
Nahoru Odpovědět
30.9.2012 9:50
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:30.9.2012 10:02

Už jsem vyzkoušel 11 různých databází. Každá má své pro i proti. Některé z nich mají velmi jednoduché ovládání a dá se s nimi pracovat jako s polem.

Nahoru Odpovědět
30.9.2012 10:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:30.9.2012 14:25

Vedel by si mi ich teda poradiť?

S čím by si mi odporučil začať?

 
Nahoru Odpovědět
30.9.2012 14:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:30.9.2012 14:52

Jenže nevím, k jakému účelu to potřebuješ. Poradím ti databázi vhodnou na krátké texty a ty do ní začneš strkat video. Nebo naopak.

Z SQL databází se hodí MySQL, PostgreSQL a SQLite, ale každá je dobrá v něčem jiném. Na webové texty je asi nejlepší SQLite. Na silnou aplikační logiku a komplikované datové struktury PostgreSQL. MySQL je takový univerzál, který je někde mezi.

Z NoSQL mohu doporučit DB4 a GDBM kvůli extrémnímu výkonu při čtení, ale pro častý zápis se nehodí. Jedna z nich je k dispozici na skoro každém hostingu.

Pro velmi častý zápis se mi osvědčil Redis. Jeho unikátní datové struktury jsem v jiných databázích nenašel. Podmínkou však je, že se celá databáze vejde do RAM. Například na webové hry se hodí podstatně lépe, než velmi často používaná MySQL.

S čím začít? S jazykem SQL. Stáhni si SQLite (je to jen jeden soubor, neinstaluje se) a spusť si ho. Na YouTube najdeš k němu videotutoriál. Za 2 hodiny se naučíš vše podstatné, včetně joinů, triggerů a transakcí.

Nahoru Odpovědět
30.9.2012 14:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na samo007
David Hartinger:30.9.2012 15:35

Já bych ti poradil nainstalovat XAMPP, vše se ti samo nakonfiguruje, potom si můžeš hrát v PHPMyAdmin, je to takové hezky klikací a dá se tam psát i SQL dotazy, hezky si to osaháš.

Nahoru Odpovědět
30.9.2012 15:35
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:30.9.2012 15:43

Jenže to umí jen MySQL, které se např. na weby moc nehodí.

Nahoru Odpovědět
30.9.2012 15:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:30.9.2012 15:55

Ďakujem za rady. Asi skúsim ten SQLLite.
Mám ale ešte jeden podstatný problém. Ide o môj lokálny server. Ešte pred rokmi som si stiahol EasyPHP, kde je Lokálny web-serve, podpora PHP a MySQL, ale MySQL mi prestal fungovať a keďže som si tam nainštaloval FrogCMS, všetko mi prestalo fungovať. Už som to vzdal, neviem kde je chyba a čo mám s tým robiť.

 
Nahoru Odpovědět
30.9.2012 15:55
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:30.9.2012 16:14

Nehodí, ale je tam nejpoužívanější :D Pro začátky je určitě jednodušší, už jen proto, že nikde nemusí nic nastavovat.

Nahoru Odpovědět
30.9.2012 16:14
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:30.9.2012 16:28

U databáze SQLite nemusíš nastavovat vůbec nic. V jedné instanci jich můžeš mít otevřených až 10 a joinovat dotazy i mezi nimi. Navíc umí spoustu věcí, o kterých si MySQL může nechat jen zdát: Cizí klíče, integritní omezení, transakce,... Jistě, tabulky InnoDB to umí, ale každý hosting je nenabízí. Většinou jen MyISAM.

Proto tvrdím, že SQLite je pro začátky jednodušší, než MySQL. MySQL má jen jedinou podstatnější výhodu: Je víc v povědomí, víc se o ní mluví a píše.

Nahoru Odpovědět
30.9.2012 16:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:30.9.2012 22:58

Takže som si asi vybral dobre :)
Teraz ale premýšľam, že som sa chcel ešte naučiť C#. A keďže všetko sa naraz nedá, tak sa radšej ešte poradím :)
Čo by som mal skôr začať študovať? Ešte ani neovládam poriadne základy php. Ktorý jazyk je užitočnejší? (Pre začiatočníka)

 
Nahoru Odpovědět
30.9.2012 22:58
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:30.9.2012 23:22

Záleží na tom, co chceš programovat. Pokud desktopovou aplikaci pro Windows, tak C#. Pokud multiplatformní, tak Java nebo Python. Pokud chceš webovou aplikaci, tak nejvhodnější bude asi PHP, i když existují hostingy s Javou nebo Pythonem. Pokud chceš programovat roboty nebo vesmírné sondy, tak asi Lisp.

Univerzální programovací jazyk neexistuje. Je dobré jich znát několik a pro daný problém vždy vybrat ten nejvhodnější.

Nahoru Odpovědět
30.9.2012 23:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:1.10.2012 7:30

Aha :D

 
Nahoru Odpovědět
1.10.2012 7:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.