Autor | Zpráva | ||
---|---|---|---|
RASik Profil * |
#1 · Zasláno: 11. 4. 2015, 09:40:43
Ahoj,
tak trochu experimentuju, a prosím o pomoc u možná naprosto triviální záležitosti nebo taky naprostého nesmyslu, který ale má (zkostnatělá) mysl momentálně nedává: - mám v MySQL databázi vložené soubory různých typů - od textů přes obrázky až po zvuky - vypíšu z DB informace o těchto souborech na stránku Po zmáčknutí tlačítka formuláře u některého ze záznamů chci, aby prohlížeč klasicky nabídl soubor k otevření nebo uložení, ALE nechci, aby se mi uložil nikde na serveru. Lze to udělat? Prosím o naznačení. Děkuji. |
||
Alphard Profil |
#2 · Zasláno: 11. 4. 2015, 10:18:49
Vytvořte si nějakou download stránku (kvůli hlavičkám bude její jedinou zodpovědností předat soubor). Z databáze se vytáhne daný soubor, odešle se správná hlavička informující o typu,
header("Content-Disposition: attachment; filename=\"jmeno_souboru.pripona\""); Příklad hlaviček je třeba u funkce php.net/manual/en/function.readfile.php, fakt, že bude soubor vypisován z db, na tom nic nemění. |
||
mimochodec Profil |
#3 · Zasláno: 11. 4. 2015, 10:19:30
RASik:
„nechci, aby se mi uložil nikde na serveru.“ Nerozumím. Ono tě něco nutí ukládat soubory na server? „mám v MySQL databázi vložené soubory různých typů“ Určitě máš v databázi soubory, nikoliv jen jejich názvy? |
||
RASik Profil * |
#4 · Zasláno: 11. 4. 2015, 10:25:35
|
||
mimochodec Profil |
#5 · Zasláno: 11. 4. 2015, 11:12:26
RASik:
„No, myslel jsem, že jo, aspoň doteďka“ Tak už si to nemysli. Tak jak to popisuješ, ukládáš v databázi názvy souborů, nikoliv soubory. Alphard popisuje, jak zařídit, abys v databázi uložené soubory mohl stahovat, ale nepíše, jak je tam dostaneš. První návod, který mi našel google, je http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx - na první pohled tam nevidím nic problematického. Ale doporučil bych zvážit, jestli to tak opravdu chceš. Zkus naznačit, co tě k tomu postupu vede. |
||
Alphard Profil |
#6 · Zasláno: 11. 4. 2015, 11:32:10
mimochodec:
„Alphard popisuje, jak zařídit, abys v databázi uložené soubory mohl stahovat, ale nepíše, jak je tam dostaneš.“ Protože včera autor psal, že mu ukládání do db funguje, viz „Restartoval MySQL, zkusil vložit soubor bmp o velikosti 1800kB a FUNGUJE.“
|
||
Časová prodleva: 3 dny
|
|||
RASik Profil * |
#7 · Zasláno: 14. 4. 2015, 08:57:24
[#5] mimochodec
Zatím jsem vždycky ukládal soubory na "server" (není to vpravdě server, ale obyč. uživatelský PC s Win7 na intranetu) a do DB ukládal opravdu jen potřebné údaje. Funguje to báječně a bez problému až do té doby, než uživatel potřeboval soubor smazat. Narážel jsem vždycky na nějaká omezení přístupových práv při unlink , takže se smazal jen záznam z DB, soubor zůstal.
Tím, že už TEĎ umím vkládat do DB i VELKÉ soubory, se prostě otevírají jiné možnosti (třeba vyhledávání v textech), otázka spíš bude, co je cesta menšího odporu a protože mě to baví, rád se v tom povrtám... |
||
mimochodec Profil |
#8 · Zasláno: 14. 4. 2015, 09:40:49
RASik:
„otázka spíš bude, co je cesta menšího odporu“ Nejsem si jist, jestli to je správný přístup. Jednodušší a rychlejší řešení mají tendenci skrývat záludnosti, které hned nevidíš a až se projeví, zaplatíš za ten "ušetřený" čas i s chlupama. V případě souborů v databázi bych doporučoval udělat si test, jak se to bude chovat, až tam těch souborů budeš mít třeba 10.000. Netvrdím, že to nepůjde, říkám: otestuj si to. Druhá věc: různé hostingy mívají různá omezení. Prověř si, jestli v tom tvém případu není nastaven nějaký limit velikosti databáze. |
||
RASik Profil * |
#9 · Zasláno: 14. 4. 2015, 10:50:28
[#8] mimochodec
Jasně, menší odpor neznamená rychlejší nebo jednodušší... Mám to hodně jednoduché v tom, že sem na "své" uzavřené síti, server mám nastavený podle sebe, prakticky nic mě nenutí k zásadním upgradům čehokoliv, ve svém prostředí nemusím bojovat s potencionálními hackery, vím, že 10.000 souborů tam mít nikdy nebudu, ALE může se stát do budoucna cokoliv, takže otravuju vás a prostě se učím a zkouším... Každopádně díky. |
||
Časová prodleva: 9 let
|
0