Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z odczytem obrazków wgranych na serwer
Forum PHP.pl > Forum > Gotowe rozwiązania
ewuski
sad.gif
Mam problem z odczytem obrazków przez serwer (taki jest mój wniosek). Zdjecia za pomoca ponizszego pliku przegrywaja sie do wybranego katalogu. Natomiast przy odczycie przez jakikolwiek skrypt, zamiast obrazka pojawia sie klasyczny pusty prostokat.

Sprawdzilam wszystko : obrazek sie kopiuje, sciezka dostepu do niego jest poprawna. Ponadto po przegraniu z powrotem np. przez FTP do mnie na dysk obrazek czyta sie prawilowo.

W czym tkwi blad ? Prosze o pomoc ! Z góry wielkie dzieki exclamation.gif!

Podaje kod:

////////////////////////////
<?

if($action=='photoedit') {


?>
<form action="<? print $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
Maksymalny rozmiar pliku to 100 KB !<br/>
Maksymalna szerokosc zdjecia to 500px.<br/>
Plik : <input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="hidden" name="id" value="<? print $id; ?>">
<input type="hidden" name="action" value="photoadd">
<input type="file" name="userfile" size="50">
<input type="submit" name="add" value="Dodaj plik">
</form>
<?

}else if($action=="photoadd") {

// $plikuzytkownika - miejsce tymczasowej lokalizacji pliku na serwerze WWW
$userfile = $HTTP_POST_FILES['userfile']['tmp_name'];

// $plikuzytkownika_name - nazwa pliku w systemie uzytkownika
$userfile_name = $HTTP_POST_FILES['userfile']['name'];

// $plikuzytkownika_size - wielkosc pliku w bajtach
$userfile_size = $HTTP_POST_FILES['userfile']['size'];

// $plikuzytkownika_type - typ pliku w systemie MIME, np. image/gif
$userfile_type = $HTTP_POST_FILES['userfile']['type'];

// $plikuzytkownika_error - kod bledu zwiazanego z wysylaniem pliku
$userfile_error = $HTTP_POST_FILES['userfile']['error'];

$id = $_POST['id'];

if ($userfile_error > 0)
{
echo 'Problem: ';
switch ($userfile_error)
{
case 1: echo 'Rozmiar pliku przekroczyl wartosc upload_max_filesize'; break;
case 2: echo 'Rozmiar pliku przekroczyl wartosc max_file_size'; break;
case 3: echo 'Plik wyslany tylko czesciowo'; break;
case 4: echo 'Nie wyslano zadnego pliku'; break;
}
exit;
}

// jeszcze jedno sprawdzenie: czy plik ma prawidlowy typ MIME?

if ($userfile_type != 'image/jpeg')
{
echo 'Problem: plik nie zawiera obrazka typu jpeg';
exit;
}

// umieszczenie pliku w pozadanej lokalizacji
$lokalizacja = '../images/photo/'.$userfile_name;

// is_uploaded_file and move_uploaded_file dodane w wersji 4.0.3
if (is_uploaded_file($userfile))
{
if (!move_uploaded_file($userfile, $lokalizacja))
{
echo 'Problem: Plik nie moze byc skopiowany do katalogu';
exit;
}
}
else
{
echo 'Problem: mozliwy atak podczas wysylania pliku. Nazwa pliku: '.$userfile_name;
exit;
}


print 'Plik wyslany<br /><br />';

// pokazanie, co zostalo wyslane
// dodanie oferty do bazy
$photo_query = 'INSERT INTO FotoOferty VALUES (NULL,"'.$id.'","'.$userfile_name.'")';
$result_photo = mysql_query($photo_query) or die('Nie mozna dodac fotki do bazy : '.mysql_error());

print 'Podglad zawartosci wyslanego pliku:<br /><hr />';
print '<img src="../images/photo/'.$userfile_name.'">';
print '<br /><hr />';

};
?>


/////////////////////////
Ive
wrzuc ten kod w tagi php zeby mozna bylo cos rozczytac z tego kodu...
ewuski
Aha... sorka

  1. <?
  2. if($action=='photoedit') {
  3. ?>
  4.  
  5. <form action=\"<? print $PHP_SELF; ?>\" method=\"post\" enctype=\"multipart/form-data\">
  6. Maksymalny rozmiar pliku to 100 KB !<br/>
  7. Maksymalna szerokosc zdjecia to 500px.<br/>
  8. Plik : <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\">
  9. <input type=\"hidden\" name=\"id\" value=\"<? print $id; ?>\">
  10. <input type=\"hidden\" name=\"action\" value=\"photoadd\">
  11. <input type=\"file\" name=\"userfile\" size=\"50\">
  12. <input type=\"submit\" name=\"add\" value=\"Dodaj plik\">
  13. </form>
  14.  
  15. <?
  16. }else if($action==&#092;"photoadd\") {
  17. // $plikuzytkownika - miejsce tymczasowej lokalizacji pliku na serwerze WWW
  18. $userfile = $HTTP_POST_FILES['userfile']['tmp_name'];
  19.  
  20. // $plikuzytkownika_name - nazwa pliku w systemie uzytkownika
  21. $userfile_name = $HTTP_POST_FILES['userfile']['name'];
  22.  
  23. // $plikuzytkownika_size - wielkosc pliku w bajtach
  24. $userfile_size = $HTTP_POST_FILES['userfile']['size'];
  25.  
  26. // $plikuzytkownika_type - typ pliku w systemie MIME, np. image/gif
  27. $userfile_type = $HTTP_POST_FILES['userfile']['type'];
  28.  
  29. // $plikuzytkownika_error - kod bledu zwiazanego z wysylaniem pliku
  30. $userfile_error = $HTTP_POST_FILES['userfile']['error'];
  31.  
  32. $id = $_POST['id'];
  33.  
  34. if ($userfile_error > 0) {
  35. echo 'Problem: ';
  36. switch ($userfile_error) {
  37. case 1: echo 'Rozmiar pliku przekroczyl wartosc upload_max_filesize'; break;
  38. case 2: echo 'Rozmiar pliku przekroczyl wartosc max_file_size'; break;
  39. case 3: echo 'Plik wyslany tylko czesciowo'; break;
  40. case 4: echo 'Nie wyslano zadnego pliku'; break;
  41. }
  42. }
  43.  
  44. // jeszcze jedno sprawdzenie: czy plik ma prawidlowy typ MIME?
  45. if ($userfile_type != 'image/jpeg') {
  46. echo 'Problem: plik nie zawiera obrazka typu jpeg';
  47. }
  48.  
  49. // umieszczenie pliku w pozadanej lokalizacji
  50. $lokalizacja = '../images/photo/'.$userfile_name;
  51.  
  52. // is_uploaded_file and move_uploaded_file dodane w wersji 4.0.3
  53. if (is_uploaded_file($userfile)) {
  54. if (!move_uploaded_file($userfile, $lokalizacja)) {
  55. echo 'Problem: Plik nie moze byc skopiowany do katalogu';
  56. }
  57. }else{
  58. echo 'Problem: mozliwy atak podczas wysylania pliku. Nazwa pliku: '.$userfile_name;
  59. }
  60.  
  61.  
  62. print 'Plik wyslany<br /><br />';
  63.  
  64. // pokazanie, co zostalo wyslane
  65. // dodanie oferty do bazy
  66. $photo_query = 'INSERT INTO FotoOferty VALUES (NULL,\"'.$id.'\",\"'.$userfile_name.'\")';
  67. $result_photo = mysql_query($photo_query) or die('Nie mozna dodac fotki do bazy : '.mysql_error());
  68.  
  69. print 'Podglad zawartosci wyslanego pliku:<br /><hr />';
  70. print '<img src=\"../images/photo/'.$userfile_name.'\">';
  71. print '<br /><hr />';
  72.  
  73. };
  74. ?>
Gniewko
Nie bardzo rozumiem sprawy. U mnie na localu (po wykomentowaniu lini 71 i 72) wszystko działa bez problemów. Sprawdź strukture katalogów do których się odwołujesz, ewnt. prawa dla tych katalogów i skryptu który z nimi pracuje.

ps.
sprawdzane na Windzie XP Pro,
Apache 2.0.48, php 4.3.7
w Firefox 1.0
ewuski
no właśnie, a u mnie nie działa... i też się dziwię.
Dodam, że inne pliki w tym samym katalogu, wyświetlane za pomocą tej samej pętli (a więc z tą samą ścieżką dostępu), ale przegrane poprzez FTP, wyświetlają się normalnie.

Nie wiem natomiast jak sprawdzić prawa do katalogów ? Korzystam z dzierżawionego serwera (Apache 1.3.33 na Unixie).
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-2024 Invision Power Services, Inc.