skrypt umieszczający dane w bazie działa prawidłowo. Po dodaniu obrazka wszystkie dane dotyczące rozmiaru, typu, nazwy są poprawnie wyświetlane.
Tabela ma postać:
id varchar(30)
avatar blob
typ varchar(30)
rozmiar int.
System logowania i rejestracji w pełni działa.
Umieszczam je takim kodem:
Kod
<?
baner();
$id = uwierzytelnij(0);
if(strcmp($id,"gosc")){
$db = polaczZBaza();
if($_FILES['userfile']['size'] > 0 && $_FILES['userfile']['size'] < 60000){
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
$zapytanie = "insert into `avatars` (id, avatar, typ, rozmiar) values".
"('$id', '$content', '$fileType', '$fileSize')";
$wynik = $db -> query($zapytanie);
if($wynik){
echo '<p class="style1">Avatar wysłany poprawnie</p>';
$db -> close();
}else echo '<p class="style1">Błąd w wysyłaniu. Spróbuj ponownie.</p>';
}
}
?>
baner();
$id = uwierzytelnij(0);
if(strcmp($id,"gosc")){
$db = polaczZBaza();
if($_FILES['userfile']['size'] > 0 && $_FILES['userfile']['size'] < 60000){
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
$zapytanie = "insert into `avatars` (id, avatar, typ, rozmiar) values".
"('$id', '$content', '$fileType', '$fileSize')";
$wynik = $db -> query($zapytanie);
if($wynik){
echo '<p class="style1">Avatar wysłany poprawnie</p>';
$db -> close();
}else echo '<p class="style1">Błąd w wysyłaniu. Spróbuj ponownie.</p>';
}
}
?>
Pliki wysyłane są z formularza:
Kod
<?
baner();
$id = uwierzytelnij(1);
if(strcmp($id,"gosc")){
echo '
<FORM ACTION="send.php" METHOD="POST" ENCTYPE="multipart/form-data">
<div class="style1"><input type="hidden" name="MAX_FILE_SIZE" value="60000">
Avatar: </td><td><INPUT type="file" name="userfile">
<input type="submit" name="sumbit" value="zapisz"/>
</FORM>';
echo '<img src="mojserwer/showavatar.php?id='.$id.'" alt="avatar" width="150" height="150" />';
?>
baner();
$id = uwierzytelnij(1);
if(strcmp($id,"gosc")){
echo '
<FORM ACTION="send.php" METHOD="POST" ENCTYPE="multipart/form-data">
<div class="style1"><input type="hidden" name="MAX_FILE_SIZE" value="60000">
Avatar: </td><td><INPUT type="file" name="userfile">
<input type="submit" name="sumbit" value="zapisz"/>
</FORM>';
echo '<img src="mojserwer/showavatar.php?id='.$id.'" alt="avatar" width="150" height="150" />';
?>
wyświetlane MAJĄ być za pomocą:
Kod
<?
$db = polaczZBaza();
$id = $_GET['id'];
$zapytanie = "select avatar, typ, rozmiar from `avatars` where id='$id'";
$wynik = $db -> query($zapytanie);
if(($wynik -> num_rows) != 0){
$wiersz = $wynik -> fetch_assoc();
$typ = $wiersz['typ'];
$content = $wiersz['avatar'];
header("Content-type: $typ");
echo $content;
}
$db -> close();
?>
$db = polaczZBaza();
$id = $_GET['id'];
$zapytanie = "select avatar, typ, rozmiar from `avatars` where id='$id'";
$wynik = $db -> query($zapytanie);
if(($wynik -> num_rows) != 0){
$wiersz = $wynik -> fetch_assoc();
$typ = $wiersz['typ'];
$content = $wiersz['avatar'];
header("Content-type: $typ");
echo $content;
}
$db -> close();
?>
Po użyciu tego cudnego kodu wyskakuje mi pusty kwadrat w miejscu avatara, ale bez ikonki uszkodzenia, tylko taka jakaś szara jest w lewym rogu.
w informacjach obrazka mam:
-prawidłowo wpisany adres do tego pliku np. http://mojserwer/showavatar.php?id=mysikun
-prawidłowy rozmiar np. 3,7KB
-prawidłowy typ image/JPEG
-BŁĘDNY ROZMIAR PLIKU 0x0(przeskalowano do 150x150)
Kiedy wchodzę w źródło strony i klikam na ten 'adres' obrazka uzyskuję informację:
Obrazek "view-source:http://mojserwer/showavatar.php?id=mysiokun" nie może zostać wyświetlony, ponieważ zawiera błędy.
Straciłem na to kilkanaście godzin. implementowałem to na kilka sposobów i za każdym razem to samo.. Obrazek uszkodzony. Testowałem na kilku plikach, na JPEG, zrobionym przeze mnie, sciagnietym z neta, na GIFie PNG nic nie działa.Bardoz proszę Was o pomoc, bo już mi się skończyły pomysły..