Mam problem z przesyłaniem plików na serwer i nie wiem w czym rzecz. Wykorzystuję AJAX do wyświetlania wyników bez przeładowania strony.
Skrypt nie rozpoznaje typu pliku i przez to nie można go zapisać na serwerze.
Kod js:
Wysyłanie danych z formularza z AJAXKod formularza do wysyłania pllików:
<!doctype html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <script src="./skrUploader.js" type="text/javascript"></script> <h1>Wysyłanie nowych plików na serwer.
</h1> <form action="utworz.php" name="tworzKat" onsubmit="xmlhttpPost('utworz.php', 'tworzKat', 'wyswietlPliki', '<img src=\'pleasewait.gif\'>'); return false;">
<label for="inputNazwaKat">Nazwa katalogu:
</label> <input type="text" name="inputNazwaKat" size="20" maxlenght="10" /> <input type="submit" value="Utwórz" /> <form enctype="multipart/form-data" name="plik" action="wyslij.php" onsubmit="xmlhttpPost('wyslij.php', 'plik', 'wyswietlPliki', '<img src=\'pleasewait.gif\'>'); return false;">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <label for="plikuzytkownika">Załaduj ten plik:
</label> <input name="plikuzytkownika" type="file" id="plikuzytkownika" /><br />
<input type="submit" id="wyslij" value="Wyślij" tabindex="4" />
<div id="wyswietlPliki" style="background:#ccc; width:600px; height:300px; padding-top:30px; margin-top:20px; padding-left:10px;">
<!--FOOTER-->
oraz plik wyslij.php
<!doctype html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<TITLE>Wysyłanie...</TITLE>
</HEAD>
<BODY>
<h3>Wysyłanie plików na serwer...</h3>
<?php
// sprawdzam, wartość pola hidden - maksymalny rozmiar pliku
$size = $_POST['MAX_FILE_SIZE'];
//sprawdzam czy przy wysylaniu nie ma błędów
if ((($_FILES["plikuzytkownika"]["type"] == "image/jpeg")
|| ($_FILES["plikuzytkownika"]["type"] == "image/pjpeg")
|| ($_FILES["plikuzytkownika"]["type"] == "image/gif")
|| ($_FILES["plikuzytkownika"]["type"] == "image/x-png")
|| ($_FILES["plikuzytkownika"]["type"] == "image/png")
)
&& ($_FILES['plikuzytkownika']['size'] < $size))
{
if($_FILES['plikuzytkownika']['error']>0)
{
// jeśli pojawił się problem przy przesyłaniu danych to wyświetla komunikat
echo 'Pojawił się problem:'; switch ($_FILES['plikuzytkownika']['error'])
{
case 1
: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break; case 2
: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break; case 3
: echo 'Plik wysłany tylko częściowo'; break; case 4
: echo 'Nie wysłano żadnego pliku'; break; case 6
: echo 'Nie można wysłać pliku. Nie wskazano katalogu tymczasowego'; break; case 7
: echo 'Wysłanie pliku nie powiodło się. Nie zapisano pliku na dysku.'; break; }
}
// jeśli nie było problemów, sprawdzamy, czy przypadkiem plik już nie istnieje
$target = './obrazkiWyslane/';
$plik = $target . $_FILES['plikuzytkownika']['name'];
// jesli plik już istnieje to wyświetl komunikat, jeśli nie to przenieś
{
echo $_FILES["plikuzytkownika"]["name"] . " już istnieje. <br /><a href=\"".$_SERVER["HTTP_REFERER"]."\">Powrót</a>"; }
// jeśli plik nie istnieje to dalej....
else
{
{
{
echo 'Problem: Plik nie może być skopiowany do katalogu'; }
}
else
{
echo 'Problem: podczas wysyłania pliku. Nazwa pliku: '; echo $_FILES['plikuzytkownika']['name']; }
echo 'Plik wysłany.<br /><br />'; }
} else {
echo 'Niepoprawny typ pliku lub rozmiar.'; }
?>
</BODY>
</HTML>
Poza tym, tekst wyświetla mi się bez polskich znaków...Próbowałam już zmieniać kodowanie na utf-8 ale nic to nie daje. Czy ktoś wie, o co może chodzić?
Poprzez polecenie
echo $_POST['plikuzytkownika']['type'] . ' ';
postanowiłam sprawdzić, jaki wynik zwraca mi skrypt no i okazuje sie, ze jest to pierwsza litera z nazwy pliku.