| Autor | Správa |
majoha
 Užívateľ
 Založený: 04.01.2011 Príspevky: 8
 | Zaslal: Po 07.11.11 22:04 |   |
Ahojte,mám tento kód:| kód: | <?php
require "spojeniee.php";
$maxFileSize = "1000000"; // 1 MB file size
$image_array = array("image/jpeg","image/jpg","image/gif","image/bmp","image/pjpeg","image/png");
$fileType = $_FILES['obrazok']['type'];
$msg = '';
$original = $_FILES [ 'obrazok' ][ 'tmp_name' ];
$velkost = getimagesize($original);
$sirka = $velkost[0];
$vyska = $velkost[1];
$tn_sirka=$velkost[0];
$tn_vyska=$velkost[1];
$max_rozmer=500;
if($tn_sirka>$max_rozmer){
$tn_vyska=$tn_vyska/($tn_sirka/$max_rozmer);
$tn_sirka=$max_rozmer;
}
if($tn_vyska>$max_rozmer){
$tn_sirka=$tn_sirka/($tn_vyska/$max_rozmer);
$tn_vyska=$max_rozmer;
}
$org = ImageCreateFromJpeg($original);
$tn = ImageCreateTrueColor($tn_sirka,$tn_vyska);
ImageCopyResized($tn,$org,0,0,0,0,$tn_sirka,$tn_vyska,$velkost[0],$velkost[1]);
ob_start ();
ImageJpeg($tn);
$image_thumb = ob_get_contents ();
ob_end_clean ();
if(@$_POST['submit'])
{
if (in_array($fileType, $image_array))
{
if(is_uploaded_file($_FILES['obrazok']['tmp_name']))
{
if($_FILES['obrazok']['size'] < $maxFileSize)
{
$obrazok =addslashes (file_get_contents($_FILES['obrazok']['tmp_name']));
$sql = "INSERT INTO obrazky (obrazok,odkaz,type,image_height,
image_width,thumb_width,thumb_height,image_thumb) VALUES
('$obrazok','$_POST[odkaz]','$fileType','$vyska',
'$sirka' , '$tn_sirka' , '$tn_vyska','$tn' )";
mysql_query($sql) or die(mysql_error());
$msg = "Obrázok sa úspešne nahral";
}
else
{
$msg = 'Obrazok prekročil maximálny limit';
}
}
}
else
{
$msg = 'Neplatný obrázok ';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="sk">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<body>
<span style="color:#FF0000"><?php echo $msg; ?></span><br />
<h3>Vyberte obrazok ktorý chcete nahrať</h3>
<form enctype="multipart/form-data" action="" method="post">
E-mail: <input type="text" name = "odkaz"><br>
<input name="obrazok" type="file" />
<input type="submit" value="Odoslať" name="submit"/>
</form>
</body>
</html> |
nedarí sa mi uložiť miniatúru do databázy.Do "image_thumb"mi namiesto Súbor JPG uloží súbor typu Binary File.Naozaj neviem kde robím chybu. Vopred ďakujem za každú radu. |
| |
  |
 |
chrono
 Skúsený užívateľ
 Založený: 13.11.2007 Príspevky: 808
 | Zaslal: Po 07.11.11 22:08 |   |
Ako si zisťoval, že to nie je jpg, ale je to binary file?
PS: Myslíš si, že je dobrý nápad dávať obrázky do DB? Ak by to boli "normálne" súbory, tak by ich posielal priamo webový server (pravdepodobne Apache) a server by to zaťažovalo oveľa menej (navyše by si prehliadač mohol ten obrázok uložiť do cache; síce to by si mohol dorobiť aj pri použití DB, ale pochybujem, že to tam máš). |
| |
  |
 |
majoha
 Užívateľ
 Založený: 04.01.2011 Príspevky: 8
 | Zaslal: Ut 08.11.11 21:45 |   |
Po kliknutí na obrázok v databáze mi ukáže akého typu je súbor. |
| |
  |
 |
chrono
 Skúsený užívateľ
 Založený: 13.11.2007 Príspevky: 808
 | Zaslal: Ut 08.11.11 22:24 |   |
V čom to pozeráš? Datábáze je úplne jedno, aké binárne dáta do nej ukladáš, ty sa musíš postarať, aby si klientovi povedal, čo to vlastne je. Takže ak tam chceš dávať rôzne typy obrázkov, musíš si uložiť aj to, o oký typ ide, aby si potom vedel klientovi poslať správny MIME typ.
Stále ale platí, že ukladať obrázky do DB nie je dobrý nápad (a netuším, k čomu to má slúžiť). |
| |
  |
 |
majoha
 Užívateľ
 Založený: 04.01.2011 Príspevky: 8
 | Zaslal: Ut 08.11.11 22:52 |   |
V db mám uložený originál +miniatúru.Originál sa dá zobraziť ale miniatúra nie.
Čo sa tíka ukladania údajov do DB,ja si myslím že pre mňa je to dobré riešenie. |
| |
  |
 |
chrono
 Skúsený užívateľ
 Založený: 13.11.2007 Príspevky: 808
 | Zaslal: Ut 08.11.11 23:00 |   |
A aspoň tam máš vyriešenú tú možnosť cache-ovania?
Inak v tom INSERT máš premennú $tn. Nemala by tam byť náhodou premenná $image_thumb? |
| |
  |
 |
neopagan
 Užívateľ
 Založený: 07.08.2006 Príspevky: 681
 | Zaslal: St 09.11.11 14:36 |   |
do dtb by som odporucal vkladat len cestu k obrazkom a k miniaturam.
Popripade existuje funkcia, ktora ti automaticky vytvori miniaturu a ulozi ju docasne do cache priecinka, takze napr. ja ziadne miniatury do dtb nedavam... |
| |
  |
 |
|