[PHP] Upload plikow

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
MoLo
Nowy
Nowy
Posty: 30
Rejestracja: pt lut 03, 2006 6:56 pm

[PHP] Upload plikow

Post autor: MoLo »

Przeszukalem forum i nie zanalzlem dzialajacego skryptu :/ W jednym niby plik zostal wyslany, ale na serwerze ani sladu po pliku. Atrybuty fodlera, w ktorym jest stronka zmienilem na 777 i dalej lipa...

Moze ktos ma sprawny skrypt ?
atom
Nowy
Nowy
Posty: 145
Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:

Re: [PHP] Upload plikow

Post autor: atom »

MoLo
Nowy
Nowy
Posty: 30
Rejestracja: pt lut 03, 2006 6:56 pm

Re: [PHP] Upload plikow

Post autor: MoLo »

Kod: Zaznacz cały

<form method="post" action="index.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
  Wybierz plik, ktory chcesz dodac<br>
<input type="file" name="pliczek" size="40"><br>
<input type="submit" value="Dodaj plik">

<? 
    move_uploaded_file($_FILES['pliczek']['tmp_name'],"pliki/".$_FILES['pliczek']['name']); 
?>

Tak wyglada kod ze strony ktory podal kolega w swoim poscie powyzej [atom dzieki za odzew]. Na serwerze utworzylem katalog upload, w nim jeszcze jeden o nazwie "pliki". W katalogu upload znajduje sie index.php. Zmienilem chmod katalogu na 777, ale po wybraniu pliku i nacisnieciu na "Dodaj plik" na serwerze nic sie nie pojawia:/ Dlaczego?
atom
Nowy
Nowy
Posty: 145
Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:

Re: [PHP] Upload plikow

Post autor: atom »

Hmmm... Twoj kod wygląda raczej dobrze. Jakby się coś nie udało, dostałbyś błąd (w zależności od ustawionego w php poziomu raportowania błędów). Być może jest tak, że Twoj użytkownik, którym szukasz uploadowanego pliku nie jest jego właścicielem i go nie widzi... (ale nie jestem ekspertem od systemów unixowych).

Spróbuj zrobić link do pliku przeniesionego, coś w tym stylu (wstawione po linii move_uploaded_file, pisane z głowy bez testowania...):

Kod: Zaznacz cały

if (isset($_FILES['pliczek']['name']))
{
   echo "<p><a href='" . pliki/".$_FILES['pliczek']['name'] . "'>pliczek</a></p>";
}
Zobaczysz w ten sposób czy plik rzeczywiście się z-upload-ował. Jak coś nie wychodzi debugguj (np. wypisz sobie wartość $_FILES['pliczek']['tmp_name']) - to naprawdę pomaga zlokalizować problem.

P.S. Pamietaj jeszcze o zamykaniu tagów (form, input i br).
Salfunglandyare
Nowy
Nowy
Posty: 88
Rejestracja: śr sty 24, 2007 9:52 pm
Lokalizacja: Kuj-Pom.

Re: [PHP] Upload plikow

Post autor: Salfunglandyare »

Funkcja move_uploaded_file() powoduje warninga tylko jeśli nie można zapisać do folderu, więc jeśli się pojawi, plik zostaje przesłany prawidłowo, ale nieprawidłowa jest ścieżka. Jeśli tak jest, moim zdaniem winą można tu obarczyć relatywną ścieżkę dostępu do folderu. Jeśli folder "pliki" znajduje się na tym samym stopniu drzewa katalogów co plik index.php można pokusić się o podanie ścieżki absolutnej:
[php]
<?
if(!empty($_FILES['pliczek']['name']))
{
$dir=dirname(__FILE__).'/pliki/'.$_FILES['pliczek']['name'];
move_uploaded_file($_FILES['pliczek']['tmp_name'],$dir) or die('Nie można zapisać pliku do '.$dir);
}
?>
[/php]

Jeśli folder 'pliki' znajduje się w niższym stopniu katalogów niż index.php wystarczy użyć '/../'

pzdr.

PS. Jeśli serwer jest na windowsie, może być konieczne użycie '\\' zamiast '/'
[/b]
ODPOWIEDZ