Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload php
Forum PHP.pl > Forum > Przedszkole
lotmich
Witam, mam problemik. Korzystam z gotowego skryptu php do uploadowania plików, ale mam problem jak próbuje coś wysłać to mi wyskakuje błąd i nie wiem co zrobić.

Teść błędu jest taka:

Odebrano plik. Początkowa nazwa: 222.jpg
Typ: image/pjpeg

Warning: move_uploaded_file(/home/services/httpd/html/foto/222.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/users/lotmich/public_html/php/plik2.php on line 14

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpH2oKWF' to '/home/services/httpd/html/foto/222.jpg' in /home/users/lotmich/public_html/php/plik2.php on line 14" title="Zobacz w manualu php" target="_manual



Pierwszy plik wygląda tak:

  1. <form action="plik2.php" method="POST" ENCTYPE="multipart/form-data">
  2. <input type="file" name="plik"/>
  3. <input type="submit" value="Wyślij plik"/>
  4. </form>
  5. </body>
  6. </html>


A drugi plik tak:

  1. <?php
  2.  
  3. $max_rozmiar = 1024*1024;
  4. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  5. if ($_FILES['plik']['size'] > $max_rozmiar) {
  6. echo 'Błąd! Plik jest za duży!';
  7. } else {
  8. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
  9. echo '<br/>';
  10. if (isset($_FILES['plik']['type'])) {
  11. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  12. }
  13. move_uploaded_file($_FILES['plik']['tmp_name'],
  14. $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  15. }
  16. } else {
  17.  echo 'Błąd przy przesyłaniu danych!';
  18. }
  19.  
  20. ?>


W folderze gdzie mam ten skrypt są nadane prawa na 777. Za podanie przyczyny tego błędu z góry dziękuję.
Macok
Wyglada na to ze gdzies zle podales nazwe pliku albo folderu.
Sprawdz to!
lotmich
Z tego co rozumie to ten skrypt zapisuje mi plik do folderu o nazwie foto i mam taki folder z prawami 777. Programuje w php od nie dawna i nierozumie tego kawałka:
  1. <?php
  2. move_uploaded_file($_FILES['plik']['tmp_name'],
  3. $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  4. ?>
lotmich
Zastosowałem inny kod i działa.
  1. <?php 
  2. echo '<?xml version="1.0" encoding="iso-8859-2"?>'; 
  3. ?> 
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
  5. transitional.dtd"> 
  6. <html> 
  7. <head> 
  8. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" /> 
  9. <title>Upload</title> 
  10. </head> 
  11. <body> 
  12.  
  13. <div> 
  14. <form enctype="multipart/form-data" action="up.php" method="POST"> 
  15. <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> 
  16. <input name="plik" type="file" /> 
  17. <input type="submit" value="Wyślij plik" /> 
  18. </form> 
  19. </div> 
  20.  
  21. <?php 
  22. $plik_tmp = $_FILES['plik']['tmp_name']; 
  23. $plik_nazwa = $_FILES['plik']['name']; 
  24. $plik_rozmiar = $_FILES['plik']['size'];
  25. $typ_pl = $_FILES['plik']['type']; 
  26.  
  27. if(is_uploaded_file($plik_tmp)) { 
  28.  move_uploaded_file($plik_tmp, "foto/$plik_nazwa"); 
  29. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze 
  30. <strong>$plik_rozmiar bajtów</strong> $typ_pl został przesłany na serwer!"; 
  31. } 
  32. ?> 
  33. </body> 
  34. </html>


Tylko mam znowu problemik, ten skrypt dodaje wszystkie pliki a jak wiecie jest to troszkę nie bezpieczne i chciałbym tam zastosować instrukcje która by mi dodawała tylko pliki typu .rar i .zip. I tu jest problem, pobieram wartość $typ_pl a jej wartość przy plikach są rózne np.
plik HTML- text/plain
plik JPG - image/pjpeg
To jest ok, ale problem jest przy pliku php i RAR bo w tych dwoch plikach wartość jest application/octet-stream i tu jest problem bo jak zrobię instrukcje:


$typndz = "application/octet-stream";

if($typ_pl == $typndz):

To doda mi to pliki rar i php. Macie jakieś propozycje na zablokowanie pliku php?
lotmich
Kloejny problem, pathinfo fajna opcja tylko jest taki problem ze działała ona poprawnie jak informacje o pliku zostały by odrazu pobrane. A tak nie jest, klikam w plik i wyślij. Zaczyna mi uploadować plik i dopiero jak plik jest na serweze to wyświetla mi informacje o wielkości pliku nazwie itp. Ma ktoś jakieś propozycje jak zrobić aby dane o pliku zostały pobrane przed uploadowaniem.
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.