Witam,
Bazując na wielu tutorialach dostępnych w internecie próbuję wgrać zdjęcia do bazy, a następnie wyświetlić je. Problem polega na tym, że:
a) fread wywala się gdy wgrywam jakikolwiek format poza .PNG
(IMG:
style_emoticons/default/cool.gif) przy próbie wczytania zapisanego do bazy PNG moim oczom ukazują się piękne krzaczki.
W pewnym momencie zacząłem 'na pałę' kopiować kody z tutoriali i również napotkałem ten sam problem. Czy zanim zabrałem się do pracy powinienem zainstalować jakieś magiczne biblioteki o których nikt nigdzie nie wspominał (do obsługi innych formatów poza PNG)? Czy mam błąd w kodzie którego nie widzę?
Localhost: WebServ
Baza:
CREATE TABLE `zdjecia` (
`id_zdjecia` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`uzytkownik` int(10) UNSIGNED NOT NULL,
`zdjecie` mediumblob NOT NULL,
`typ` varchar(20) character SET utf8 NOT NULL,
`rozmiar` int(11) NOT NULL,
`nazwa` varchar(30) character SET utf8 collate utf8_polish_ci NOT NULL,
PRIMARY KEY (`id_zdjecia`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=3 ;
zawartość bazy:
INSERT INTO `zdjecia` (`id_zdjecia`, `uzytkownik`, `zdjecie`, `typ`, `rozmiar`, `nazwa`) VALUES
(2, 13, [[i]tutaj długi ciąg danych zdjęcia[/i]] , 'image/png', 11187, 'naglowek.png');
formularz html:
<form method="post" action="portal.php?id=zdjecie_dodaj" ENCTYPE="multipart/form-data" > <div> Wskaż zdjęcie do załadowania:
</div> <div> <input type="hidden" name="MAX_FILE_SIZE" value="2000000"> </div>
skrypt dodający zdjęcie:
<?php
require_once('funkcje_dodatkowe.php'); //funkcja polacz_db
try {
$fileName = $_FILES['zdjecie']['name'];
$tmpName = $_FILES['zdjecie']['tmp_name'];
$fileSize = $_FILES['zdjecie']['size'];
$fileType = $_FILES['zdjecie']['type'];
$fp = fopen($tmpName, 'r');
$id = $_SESSION['id_sesji'];
$polaczenie = polacz_db();
if(!$polaczenie)
throw new Exception ("Blad łączenia z bazą danych");
$zapytanie = $polaczenie->query("insert into zdjecia values(NULL, '$id', '$content', '$fileType', '$fileSize', '$fileName')");
if(!$zapytanie)
throw new Exception ("Nie udało się zapisać zdjęcia");
}
catch (Exception $e){
mysqli_close($polaczenie);
?>
skrypt mający wyświetlać zdjęcie:
<?php
require_once('funkcje_dodatkowe.php');//funkcja polacz_db
$id = $_SESSION['id_sesji'];
$polaczenie = polacz_db();
try{
$zapytanie = $polaczenie->query("select id_zdjecia, zdjecie from zdjecia where uzytkownik = '$id'");
if(!$zapytanie)
throw new Exception("Wykonanie zapytania do bazy danych nie powiodło się");
while(list($uzytkownik, $nazwa) = $zapytanie->fetch_array())
echo ('<a href="portal.php?id='.$id_zdjecia.'> <'.$nazwa.'></a></br>');
}
catch (Exception $e){
mysqli_close($polaczenie);
?>