Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: move_uploaded_file
Forum PHP.pl > Forum > PHP
pentel
Witam,
Wysyłam zdjęcie za pomocą formularza. Formularz pomijam, oto napisany przeze mnie skrypt php:
  1. <?php
  2. if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  3. if ( is_uploaded_file($_FILES[$_SESSION['user']]['tmp_name']) ) {
  4.  if ( $_FILES[$_SESSION['user']]['size'] <= (50*1024*1024) ) {
  5. $fileext = explode('.', $_FILES[$_SESSION['user']]['name']);
  6. $fileext = $fileext[1];
  7. switch (true) {
  8.  case ( $fileext == 'jpg' ) :
  9.  case ( $fileext == 'jpeg' ) :
  10.  case ( $fileext == 'png' ) :
  11.  case ( $fileext == 'gif' ) :
  12.  if ( $_FILES[$_SESSION['user']]['type'] == ('image/jpeg' || 'image/png' || 'image/gif') ) {
  13. $uploaddir = 'users/';
  14. $uploadfile = $uploaddir . $_SESSION['user'] . '.' . $fileext;
  15. $moveuploadedfile = move_uploaded_file($_FILES[$_SESSION['user']]['tmp_name'], $uploadfile);
  16. if ( $moveuploadedfile ) {
  17.  $sql = "UPDATE `users` SET `imagename` = '" . $_SESSION['user'] . "." . $fileext . "' WHERE `login` = '" . $_SESSION['user'] . "'";
  18.  $editpic = mysql_query($sql);
  19.  if ($editpic) {
  20. echo 'Your picture has been successfully uploaded. <br />' . "n";
  21. echo '<a href="?x=profile&amp;a=edit">Go to edit profile</a>.' . "n";
  22. echo $_FILES[$_SESSION['user']]['error'];
  23.  } else {
  24. echo 'There was a problem with storing picture info in mysql database. Please, try aga
    in. If that does not help, contact admin. <br/>'
     . "n";
  25. include_once 'inc/formpicture.php';
  26.  }
  27. } else {
  28.  echo 'Could not store your picture. Please, try again. If that does not help, contact 
    admin. <br />'
     . "n";
  29.  include_once 'inc/formpicture.php';
  30. }
  31.  } else {
  32. echo 'The file type is not allowed. <br />' . "n";
  33. include_once 'inc/formpicture.php';
  34.  }
  35.  break;
  36.  default :
  37.  echo 'The file extension is not allowed. <br />' . "n";
  38.  include_once 'inc/formpicture.php';
  39.  break;
  40. }
  41.  } else {
  42. echo 'File size exceeds the maximum allowed value. <br />' . "n";
  43. include_once 'inc/formpicture.php';
  44.  }
  45. } else {
  46.  echo 'There was a problem with uploading your picture. Please, try again. If that does
     not help, contact admin. <br />'
     . "n";
  47.  include_once 'inc/formpicture.php';
  48. }
  49.  } else {
  50. include_once 'inc/formpicture.php';
  51.  }
  52. ?>

Nawet wyświetliłem error, żeby sprawdzić, co jest grane. Error daje 0, czyli że niby wszystko w porządku. Plik przeszedł wszystkie zabezpieczenia, info zapisuje się w bazie danych, ale pliku w końcowym katalogu nie ma. Z tego wnioskuję, że albo move_uploaded_file albo zadziałał, albo przeniósł mi plik nie do tego katalogu co trzeba.
Jeśli może sie to przydać, to host mam na 60free.ovh.org. Próbowałem obie wersje ścieżki:
$uploaddir = 'users/';
oraz
$uploaddir = /home/n/a/z/nazwa/www/users/

Prosze o pomoc, czemu pliku nie ma w zadanym katalogu i co zrobić, żeby był smile.gif
Pozdrawiam
Ziels
Daj $uploaddir = './users/'
pentel
Witaj!
No więc działa. Tylko, że plik ma CHMOD 600, więc na stronie obrazek sie nie wyświetli.
Tuż po $moveuploadedfile = move_uploaded_file($_FILES[$_SESSION['user']]['tmp_name'], $uploadfile); dałem więc jeszcze funkcję
  1. <?php
  2. chmod($uploadfile, 0644);
  3. ?>

i działa jak złoto smile.gif

Macie więc gotowy skrypt smile.gif

Pozdrawiam.
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-2025 Invision Power Services, Inc.