🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #230904

dane binarne w bazie?

#230904
From: jivanmukta
Date: Thu, 12 Feb 2015 17:14
28 lines
3048 bytes
  Piszę system o nieruchomościach w CodeIgniterze. W bazie (MySQL) przechowuję m.in. dane o nieruchomościach, dla których użytkownik może załączyć kilka zdjęć/filmów. Ktoś mi polecił, żebym przechowywał te obrazki w systemie plików a nie w bazie, jednak ostatnio czytałem pewną książkę o PHP5+MySQL i tam polecają rozwiązanie z przechowywaniem danych binarnych w bazie.
  Pytałem już o to, ale ponieważ nie jestem przekonany do mojego aktualnego rozwiązania (tzn. w systemie plików), zapytuję raz jeszcze - może wypowiedzą się inne osoby, z innymi argumentami. Szczerze mówiąc teraz bardziej mi się podoba przechowywanie danych w bazie, bo chyba na bazę jest więcej miejsca niż w systemie plików. Co prawda moja witryny na razie będzie działać dla woj. mazowieckiego, ale później potencjalnie na wiele krajów, również spoza Europy; zatem danych będzie sporo.
  Rozwiązanie opisane w książce jest, w skrócie, następujące:
1. ładowanie obrazka do bazy:
    $f = @fopen($_FILES['picture']['tmp_name'], 'r');
    if ($f === NULL)
      throw new FileAccessException();
    $fsize = @filesize($_FILES['picture']['tmp_name']);
    $fileData = addslashes(fread($f, $fsize));
    fclose($f);
    $query = <<< EOQUERY
      INSERT INTO sample VALUES (..., '$fileData', ...);
    EOQUERY;
2. odczyt obrazka z bazy:
    $query = <<< EOQUERY
      SELECT user_id, picture, file_type, file_size
      FROM sample
      WHERE user_id = $uid
    EOQUERY;
    ...
    if ($row !== NULL) {
      header("Content-type: {$row['file_type']}");
      header("Content-length: {$row['file_size']}");
      header("Content-Disposition: attachment; filename = $uid.jpg");
      header("Content-Description: PHP Generated Data");
      echo $row['picture'];
    }
Co o tym sądzicie?
Technical Details
Message-ID: <36897656-eb47-48fd-8bc1-410b96a612ce@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.giganews.com!j7no127559qaq.1!news-out.google.com!c1ni4qar.1!nntp.google.com!i13no801707qae.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Received: by 10.52.5.169 with SMTP id t9mr4643322vdt.7.1423761250615;        Thu, 12 Feb 2015 09:14:10 -0800 (PST)
X-Received: by 10.140.20.247 with SMTP id 110mr67724qgj.17.1423761250553; Thu, 12 Feb 2015 09:14:10 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.giganews.com!j7no127559qaq.1!news-out.google.com!c1ni4qar.1!nntp.google.com!i13no801707qae.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.php
Date: Thu, 12 Feb 2015 09:14:10 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.73.80.243; posting-account=Fd8BNwoAAACl8PCi6-fI0bkHGOgt6LMa
NNTP-Posting-Host: 89.73.80.243
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <36897656-eb47-48fd-8bc1-410b96a612ce@googlegroups.com>
Subject: dane binarne w bazie?
From: jivanmukta@poczta.onet.pl
Injection-Date: Thu, 12 Feb 2015 17:14:10 +0000
Lines: 39
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit