Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapis obrazka do bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
wojtiku
Witam serdecznie - moje pytanie brzmi: jak zapisać obrazek do bazy danych?
Chodzi mi o jak najprostszy sposób (najlepiej żeby nie był obiektowy, bo taki znzlazłem, ale mi się nie podoba...). Od jakiegoś czasu przeszukuję internet i to forum pod kątem tego zapytania, ale nie mogę znaleźć odpowiedzi - wiec pytam smile.gif
Pozdrawiam serdecznie
elessar
jezeli chcesz to w php to najprosciej jest wczytac binarnie obrazek do zmiennej i zapisac ja w polu typu blob
a jezeli chcesz wyswietlic np. jpg to robisz cos takiego:
  1. <?php
  2. header("Content-type: image/jpeg");
  3. print $bytes;
  4. ?>
Jarod
A nie lepiej w bazie trzymać tylko ścieżke do pliku i wyświetlać przez img?
free
Tez uwazam ze lepiej w bazie trzymac tylko sciezke do pliku, a obrazek na serwerze.
Tylko jak to zrealizowac, przydaloby mi sie w moim projekcie bazy
slash12345
Często zachodzi sytuacja, gdy nie chcemy trzymać obrazków w systemie plików, ponieważ ograniczamy do nich dostęp. Otwarcie obrazka może wtedy wymagać podania hasła itp, można to wykorzystać w komercyjnych programach typu "podaj kod dostępu otrzymany SMS-em". Pomysł z polem BLOB jest dobry. A jeśli chcesz wysyłać obrazek jako dyspozycja (czyli z takim fajnym wyskakującym okienkiem pytającym co zrobić z tym plikiem), użyj
  1. <?php
  2.  
  3. header("Content-disposition: attachment; filename=obrazek.jpg");
  4.  
  5. ?>

Wtedy obrazek jest pobierany.
matrach
Tu masz cały skrypt który zapisuje i wyświetla obrazki z mysql
Powinien działać, gdyż sam z niego korzystam
  1. <?php
  2. //nazwa tego pliku
  3. $to = basename($_SERVER['SCRIPT_FILENAME']);
  4. $dbc = mysql_connect('localhost', 'root', '') or die(mysql_error());
  5. ////////////////////////////////////////////////////////////
  6. if (isset($_GET['id']))
  7. {
  8. //wyświetlanie
  9. $q = 'SELECT * FROM files WHERE id="'.$_GET['id'].'" LIMIT 1';
  10. $query = mysql_query($q);
  11. if (mysql_num_rows($query) === 0)//czy wogle jest takie id
  12. {
  13. header('Location: mysqlfile.php');
  14. exit();
  15. }  
  16. $row = mysql_fetch_array($query);
  17. $source = $row['source'];
  18. header('Content-type: '.$row['mime']);//wysyłanie nagłowka content-type
  19.  
  20. echo $source;
  21.  
  22.  
  23. }
  24. else
  25. {
  26. if (!isset($_POST['submit']))
  27. {
  28. //formularz
  29. echo '<form action="' . $to . '" method="POST" enctype="multipart/form-data">
  30. Plik: <input type="file" name="file" /><br />
  31. <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  32. <input type="submit" name="submit" value="Zapisz" />
  33. </form>';
  34. }
  35. else
  36. {
  37. //Zapisywanie
  38.  
  39.  
  40. $file = $_FILES['file']['tmp_name'];
  41. $mime = $_FILES['file']['type'];
  42.  
  43. $plik = file($file);
  44.  
  45. $plik = mysql_escape_string(implode('', $plik));
  46.  
  47. $q = 'INSERT INTO files VALUES (0,"'.$plik.'","'.$mime.'" )';
  48. $query = mysql_query($q) or die(mysql_error());
  49. $id = mysql_insert_id();//Sprawdza które ma id
  50. //zmienione pola
  51. if (mysql_affected_rows() == 1)
  52. echo '<a href="'.$to.'?id='.$id.'">Id pliku to: '.$id."[zobacz]</a>\n<br />" ;
  53. else
  54. echo 'Hiustion Mamy Problem... ' . mysql_error();
  55.  
  56.  
  57. }
  58. }
  59.  
  60. ?>

Teraz go naginaj do swoich potrzeb tongue.gif

Struktura tabeli (w uproszczeniu)
----Id--------|-source-|--------mime-----|
Primary key | BLOB | varchar/tinytext*|
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.