Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przesłanie obrazu do tabeli obrazek.
waqmaz
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

Ostrzeżenie: (0%)
-----


  1. <?php
  2. require('funkcje_bazy.php');
  3.  
  4. $plik1_tmp = $_FILES['zdj']['tmp_name'];
  5. $plik1_nazwa = $_FILES['zdj']['name'];
  6. $plik1_rozmiar = $_FILES['zdj']['size'];
  7. $plik1_typ = $_FILES['zdj']['type'];
  8.  
  9. $sp1 = explode(".",$plik1_nazwa);
  10.  
  11. if(($sp1[1] == "jpg" or $sp1[1] == "gif" or $sp1[1] == "bmp" or $sp1[1] == "png") and (is_uploaded_file($plik1_tmp))){
  12. $lacz=lacz_bd();
  13.  
  14. $obraz = addslashes(fread(fopen($plik1_tmp, "r"), $plik1_rozmiar));
  15. $zapytanie = "insert into obrazek";
  16. $wynik = $lacz->query($zapytanie);
  17.  
  18. echo " $plik1_nazwa przesłany.";
  19. }
  20. else
  21. {
  22. echo "$plik1_nazwa nie przeslany.";
  23. }
  24.  
  25. ?>
  26. <form enctype="multipart/form-data" action="" method="POST">
  27. <input type="hidden" name="MAX_FILE_SIZE" value="5000" />
  28. <input name="zdj" type="file" />
  29. <input type="submit" value="Wyslij plik" />
  30. </form>


FUNKCJE_BAZY.PHP DZIAŁAJĄ, BO DO WSZYSTKIEGO SIĘ TAK ŁĄCZĘ.
W BAZIE JEST UTWORZONA TABELA obrazek z typem BLOB.
Kiedy jednak chcę coś wysłać, wciąż jest napisane: "$plik1_nazwa nie przeslany".
Co może być źle? Plik pisany przez innego użytkownika z tego forum.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
xdev
post
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 3
Dołączył: 17.09.2011

Ostrzeżenie: (0%)
-----


Nie rób czegoś takiego od serwowania plików są serwery plików. Będzie to kilkadziesiąt X wolniejsze jeszcze ci będzie umieszczało śmieci w cache SQL-a. Dodatkowo będziesz musiał się użerać z wszystkimi nagłówkami HTTP (expire, cache, partial-content, etc.). Wolno i kiepsko, zrób sobie sha1 zawartości pliku zapisz zawartość na dysk jako "{$sha[0]}/{$sha[1]}/{$sha}.{$rozszerzenie}" a do bazy relatywną ścieżkę. Expire ustaw w apache na 2 lata do przodu i masz bardzo szybki i wydajny system do serwowania awatarów.

W dodatku w przykładzie powyżej będziesz musiał używać myisam bo innoDB jest koszmarnie wone dla blobów (myisam, też, chociaż ok 2x mniej koszmarne)...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 03:19