[ Príspevkov: 16 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
NapísalOffline : 14.08.2009 10:52 | link na subor v databaze

Zdravím,
už nejaký čas sedím nad jedným problémom, presnoril som niekoľko fór ale funkčné riešenie som zatiaľ nenašiel. Snažím sa vytvoriť skript na stiahnutie súboru uloženého v databáze ako longblob. V súčastnosti môj kód vyzerá asi takto ale funguje len z časti.

download.php:
Kód:
<?php
session_start();
if(isset($_GET['name']))
{

include 'pripojenie_db.php';
$name=$_GET['name'];
$id=0+$_SESSION['id'];
$result = mysql_query("SELECT file FROM file WHERE name=$name and id=$id");
$file=$row[0];
header("Content-length:".filesize($file));
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=\"".$name.".txt\"");
  readfile($file);
exit;
}

?>


menu.php:
Kód:
<?php
if($_SESSION['loged']=='1')
  {
  $pom=0+$_SESSION['id'];
  $result = mysql_query("SELECT name FROM file WHERE id=$pom");
 while ($row=mysql_fetch_array($result)){
  $name=$row[0];
  ?>
  <a href="download.php?name=<?php echo $name;?>"><?php echo $name;?></a><br>
  <?php
 }
 mysql_free_result($result);
 }
?>


Tabuľka databázy má štruktúru:
id int
name varchar(20)
file longblob
id je cudzí kľúč na tabuľku používateľov a id aj name sú primárne kľúče.

V skripte menu.php vypisujem linky na všetky súbory čo má používateľ ktorého id je uložené pomocou session. V databáze sú uložené len súbory s príponou .txt čiže notepad.
Keď kliknem na tento link tak sa mi síce začne sťahovanie ale stiahnutý súbor je prázdny a veľkosť má 0b, už naozaj neviem v čom môže byť problém. Tento problém sa neprejavuje len pri súboroch txt alew skúšal som aj iné ale výsledok bol rovnaký. Prosím ak viete kde je problém prosím poraďte.


Offline

Užívateľ
Užívateľ
link na subor v databaze

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.08.2009 10:59 | link na subor v databaze

kde si vzal premennu $row[0] ??
skus
Kód:
$file = mysql_result($result, 0);


a co tak premennu name osetrit? :)


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 14.08.2009 11:41 | link na subor v databaze

Sorry nejak mi tam vypadol jeden riadok:

Kód:
$row=mysql_fetch_array($result);


ale ten problém je tam stále


Offline

Správca fóra
Správca fóra
link na subor v databaze

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 14.08.2009 11:56 | link na subor v databaze

pozri sa, co ti vrati filesize($file), lebo pochybujem, ze ako argument mozu byt predane binarne data...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 14.08.2009 12:02 | link na subor v databaze

Máš pravdu nevracia mi to nič. Ale ako to môžem potom predávať?


Offline

Správca fóra
Správca fóra
link na subor v databaze

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 14.08.2009 12:04 | link na subor v databaze

pri uploade si uloz do db aj velkost suboru...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 14.08.2009 12:11 | link na subor v databaze

Problém je v tom že ja tam ten súbor nedostávam uploadom ale ho tam skriptom vytváram.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 14.08.2009 12:20 | link na subor v databaze

Ale myslím že problém nieje v oznamovaní veľkosti súboru ale v samotnom vypisovaní toho súboru príkazom readfile($row[0]); alebo echo. Lebo keď som skúšal namiesto neho dať echo"hociaky text"; tak mi to v poriadku do toho súboru napísalo aj bez toho aby som nastavoval veľkosť.


Offline

Správca fóra
Správca fóra
link na subor v databaze

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 14.08.2009 12:30 | link na subor v databaze

v prvom rade si treba pozriet sql, ci tam nemas chybu (kontrola uspesneho zbehnutia by nebola odveci) - chybaju ti tam jednoduche uvodzovky okolo $name


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 14.08.2009 12:41 | link na subor v databaze

Už to mám, boli to tie úvodzovky. A nesmie sa používať funkcia readfile() lebo tá berie obsah toho súboru ako cestu a nie ako súbor, treba tam dať jednoducho echo a ide to perfektne. Fakt diky už mi z toho začínalo šibať a pritom to bola len taká drobnosť.


Offline

Skúsený užívateľ
Skúsený užívateľ
link na subor v databaze

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 14.08.2009 13:35 | link na subor v databaze

rozmýšlal by som nad uložením všetkých tých súborov priamo na disk, nie do db. S ukladaním súborov do DB mám nepekné skúsenosti, spôsobovalo to nehorázne problémy, napríklad časté padanie mysql.


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 14.08.2009 14:12 | link na subor v databaze

Neviem posúdiť čo by bolo lepšie, nebudem sa hádať so skúsenejším, ale neočakávam že do tejto databázy sa budú ukladať veľmi veľké súbory, už len preto že zatiaľ to bude na freehoste a tam je kapacita pomerne dosť obmedzená. Ak by som to prenášal inde tak by sa nad tým oplatilo pouvažovať. Ale vďaka za upozornenie, v budúcnosti s tým budem rátať.


Offline

Užívateľ
Užívateľ
link na subor v databaze

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.08.2009 14:24 | link na subor v databaze

no ale na freehostingu to mas spravene tak, ze do tej kapacity sa ti zapocitava aj velkost DB, nie ? takze ti to moze byt srdecne jedno


_________________
Sorry za prelkepy
Offline

Skúsený užívateľ
Skúsený užívateľ
link na subor v databaze

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 14.08.2009 15:48 | link na subor v databaze

sevo, ešte by som ťa chcel upozorniť na jeden podstatný detail. Keď vyberáš súbor z db, očakávam, že to bude nejaký ten kilobajt naviac v pamäti. V prípade, že použiješ funkciu mysql_fetch_array, máš tam zbytočne 2x dáta, ktoré by ti stačili 1x. Použi radšej ...fetch_row alebo ...fetch_assoc


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
link na subor v databaze

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 15.08.2009 10:17 | link na subor v databaze

alebo mysql_result()...


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 18.03.08
Prihlásený: 25.12.09
Príspevky: 29
Témy: 7 | 7
Napísal autor témyOffline : 16.08.2009 13:07 | link na subor v databaze

Fakt vďaka všetkým za užitočné rady, verím že ste pomohli aj kope iných ľudí.


 [ Príspevkov: 16 ] 


link na subor v databaze



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

I/P: 2x D-Link DSL-2741B, 1x D-Link DI524, ZyXEL ZyWALL 2 Plus, ZyXEL ZyWALL 5, TP-Link TL-SF1005D + SF1008D

v Predám

6

248

18.04.2017 18:23

castelL

V tomto fóre nie sú ďalšie neprečítané témy.

Prepojenie D-Link a TP-Link

v Siete

0

252

26.01.2012 16:43

decimus

V tomto fóre nie sú ďalšie neprečítané témy.

C++ Hlavickovy subor vs Hlavickovy subor s CPP suborom (Alebo deklaracia a definicia tried v1 alebo 2och suboroch)

v Assembler, C, C++, Pascal, Java

5

157

19.06.2017 21:16

BX

V tomto fóre nie sú ďalšie neprečítané témy.

Databáze OC

[ Choď na stránku:Choď na stránku: 1 ... 5, 6, 7 ]

v Biosy a ladenie výkonu

187

24859

27.11.2014 5:30

blabla630

V tomto fóre nie sú ďalšie neprečítané témy.

Vyhladavanie v databaze

v Databázy

4

354

10.06.2011 10:31

general667

V tomto fóre nie sú ďalšie neprečítané témy.

hladanie v databaze

v PHP, ASP

2

525

12.03.2010 14:05

1daemon1

V tomto fóre nie sú ďalšie neprečítané témy.

Coppermine - prenos databaze

v Redakčné systémy

2

358

08.09.2007 17:57

SonnY

V tomto fóre nie sú ďalšie neprečítané témy.

kategorie v databaze

v PHP, ASP

8

332

13.03.2008 20:53

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

Databáze OC GK ATi

[ Choď na stránku:Choď na stránku: 1, 2, 3, 4, 5 ]

v ATI/AMD grafické karty

145

21910

30.11.2017 21:47

dixi

V tomto fóre nie sú ďalšie neprečítané témy.

Vymena zaznamov v databaze

v PHP, ASP

6

362

05.11.2009 23:02

danielop

V tomto fóre nie sú ďalšie neprečítané témy.

prpiojenie k mysql databaze

v PHP, ASP

10

341

01.02.2009 17:51

mybirthday1403

V tomto fóre nie sú ďalšie neprečítané témy.

vyhladavanie v databaze - excel

v Databázy

2

588

25.01.2008 14:30

asken

V tomto fóre nie sú ďalšie neprečítané témy.

Sifrovanie dat v databaze

v PHP, ASP

4

183

25.10.2014 19:53

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Websupport - pripojenie k databaze

v Webhosting a servery

4

1052

30.03.2011 12:13

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena údajov v databáze

v Technológia .NET

2

1244

03.10.2009 15:56

danciwo

V tomto fóre nie sú ďalšie neprečítané témy.

Digitaly sign databaze access ???

v Ostatné programy

0

363

02.02.2007 10:17

chenile



© 2005 - 2017 PCforum, edited by JanoF