Witam!
Mam problem ze zrobieniem uploadu na swojej stronie internetowej. Bardzo możliwe że to przez mój całkowity brak wiedzy na temat php
Na internecie znalazłem taki skrypt:
if ($_FILES['plikuzytkownika']['error']>0)
{ echo 'problem:';
switch ($_FILES['plikuzytkownika']['error'])
{
case 1: echo "rozmiar pliku";break;
case 2: echo "rozmiar pliku";break;
case 3: echo "plik wyslany czesciowo";break;
case 4: echo "nie wyslano zadnego pliku";break;
}
exit;
}
$lokalizacja="katalog/".$_FILES['plikuzytkownika']['name'];
if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
{
if(!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'],$lokalizacja))
{echo '<br>problem plik nie moze byc skopiowany';
exit;}
}
else
{echo '<br>blad podczas wysylania pliku: ';
echo $_FILES['plikuzytkownika']['name'];
}
echo '<h2>plik wyslanny</h2>';
copy($plikuzytkowinka,$lokalizacja);
na stronie pojawia się okno do wyboru pliku i wysłania, jednak po kliknięciu, zamiast wysyłać plik, odsyła do pliku wyslij.php żeby go zapisać na dysku... Gdzie jest jakiś błąd i co robię nie tak?
Z góry dzięki za pomoc
Musisz przechodzić na stronę wyślij.php gdyż ona jest odpowiedzialna za pobranie informacji i ich zapis. Sprawdź czy nie masz tego zapisanego na serwerze ftp.
Jeśli nic tam nie ma, to może spróbuj na końcu dodać (zamiast opcji copy) to:
[code]
$wp = fopen($lokalizacja, 'r');
$zawartosc = fread ($wp, filesize ($lokalizacja));
fclose ($wp);
$zawartosc = strip_tags($zawartosc);
$wp = fopen($lokalizacja, 'w');
fwrite($wp, $zawartosc);
fclose($wp);
[/code]
Niedawno robiłem coś podobnego, ale ja ograniczyłem się tylko do wysyłania plików tekstowych. Więc nie jestem w 100% pewny czy w każdym wypadku to tak zadziała.
Dzięki, teraz wydaje się, że działa wszystko w porządku. Ale.. Mimo, że pisze "plik wysłany", to w folderze nie ma przesłanego pliku.. a chmod ustawiłem na 777
W pierwszym pliku zlikwiduj ";" po </form>. Jeśli chodzi o dalszą część wszystko powinno działać. Jeśli nie widać zmian, wyloguj się z serwera ftp i połącz ponownie. Powinno być widać. Poniżej przepisałem Twój kod tak aby był trochę bardziej czytelny:
if ($_FILES['plikuzytkownika']['error'] >0)
{
echo 'Problem: ';
switch ($_FILES['plikuzytkownika']['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;
}
// umieszczenie pliku w pożądanej lokalizacji
$lokalizacja = 'katalog/'.$_FILES['plikuzytkownika']['name'];
if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
{
if (!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'], $lokalizacja))
{
echo 'Problem: Plik nie moze byc skopiowany do katalogu';
exit;
}
}
else
{
echo 'Problem: mozliwy atak podczas wysylania pliku. Nazwa pliku:';
echo $_FILES['plikuzytkownika']['name'];
exit;
}
echo 'Plik wyslany<br><br>';
// ponowne sformatowanie zawatości pliku
$wp = fopen($lokalizacja, 'r');
$zawartosc = fread ($wp, filesize ($lokalizacja));
fclose ($wp);
$zawartosc = strip_tags($zawartosc);
$wp = fopen($lokalizacja, 'w');
fwrite($wp, $zawartosc);
fclose($wp);
---Edit---
Tak aby zgadzały się prawa autorskie. Skrypt jest lekko zmodyfikowaną wersją tego co zostało umieszczone w książce: Welling Luke, Thomson Laura, PHP i MySQL. Tworzenie stron WWW, Gliwice 2005.