Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: literówka przy uploadzie pliku
Forum PHP.pl > Forum > PHP
matty7
Napisałem sobie taki kodzik:

  1. <?
  2. $path_to_this_file = 'index.php?page=upload';
  3. <table align="center" bgcolor="#FFFFFF" cellpadding="1" cellspacig="0" width="390" height="277">
  4. <tr>
  5. <td valign="top" align="center" height="20">
  6. Dodaj plik
  7. </td>
  8. </tr>
  9. <tr>
  10. <td valign="top" align="center" height="249">
  11. <table><form method="POST" enctype="multipart/form-data" action="'.$path_to_this_file.'">
  12. <tr>
  13. <td>Imię:</td>
  14. <td><input type="text" name="author"></td>
  15. </tr>
  16. <tr>
  17. <td>E-mail:</td>
  18. <td><input type="text" name="adres"></td>
  19. </tr>
  20. <tr>
  21. <td>Ścieżka:</td>
  22. <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  23. <td><input type="file" name="a"></td>
  24. </tr>
  25. <tr>
  26. <td>Informacja o pliku:</td>
  27. <td><textarea name="message" rows="3" cols="30"></textarea></td>
  28. </tr>
  29. <tr rowspan="2">
  30. <td>
  31. <center><input type="submit" name="s" value="Wyślij"></center>
  32. </td>
  33. </tr>
  34. </table>
  35. </form>';
  36. if(isset($_POST['s'])){
  37. $file = explode('.', $_FILES['a']['name']);
  38. $name = $file[0];
  39. $dirsendfile = '../download/usersfiles/'; //adres gdzie plik ma byc przesłany
  40. if(is_uploaded_file($_FILES['a']['tmp_name'])){
  41. if(!file_exists($dirsendfile.$name)){
  42. mkdir($dirsendfile.$name.'/', 0666);
  43. }
  44. $dir = $dirsendfile.$name.'/'.$_FILES['a']['name'];
  45. if(move_uploaded_file($_FILES['a']['name'],$dir)){
  46. echo 'Plik został pomyślnie uploadowany!<br>';
  47. } else {
  48. echo '<font color="red">Błąd! Poinformuj admina!</font>';
  49. }
  50. } else {
  51. echo '<font color="red">Wystąpił błąd podczas wysyłania pliku na serwer! Poinformuj admina!</font>';
  52. }
  53.  
  54. }
  55.  
  56. ?>
  57. </td>
  58. </tr>
  59. </table>


no i najpierw działał, a pozniej postanowilem dopisać tworzenie folderu i przestał działać.
Error:
Warning: mkdir() failed (No such file or directory) in c:\program files\easyphp\www\portal\pages\upload.php on line 44
Błąd! Poinformuj admina!


Jest to ta część kodu:
if(!file_exists($dirsendfile.$name)){
mkdir($dirsendfile.$name, 0666);
}

Pomóżcie
sobieh
sprobuj tak :

$dirsendfile = "c:\\program files\\easyphp\\www\\portal\\download\\usersfiles\\";

jako sciezke bezwzgledna.
matty7
No ale to działało, i działa. A nawet jeśli to adres podaje user na stronie...

Sam pytam, sam odpowiadam(zupełnie jak u mnie na historii, gdy mnie nie ma:D)...
otóż dla ciekawskich poprawny kod wygląda tak:
  1. <?
  2. $path_to_this_file = 'index.php?page=upload';
  3. <table align="center" bgcolor="#FFFFFF" cellpadding="1" cellspacig="0" width="390" height="277">
  4. <tr>
  5. <td valign="top" align="center" height="20">
  6. Dodaj plik
  7. </td>
  8. </tr>
  9. <tr>
  10. <td valign="top" align="center" height="249">
  11. <table><form method="POST" enctype="multipart/form-data" action="'.$path_to_this_file.'">
  12. <tr>
  13. <td>Imię:</td>
  14. <td><input type="text" name="author"></td>
  15. </tr>
  16. <tr>
  17. <td>E-mail:</td>
  18. <td><input type="text" name="adres"></td>
  19. </tr>
  20. <tr>
  21. <td>Ścieżka:</td>
  22. <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  23. <td><input type="file" name="a"></td>
  24. </tr>
  25. <tr>
  26. <td>Informacja o pliku:</td>
  27. <td><textarea name="message" rows="3" cols="30"></textarea></td>
  28. </tr>
  29. <tr rowspan="2">
  30. <td>
  31. <center><input type="submit" name="s" value="Wyślij"></center>
  32. </td>
  33. </tr>
  34. </table>
  35. </form>';
  36. if(isset($_POST['s'])){
  37. $file = explode('.', $_FILES['a']['name']);
  38. $name = $file[0];
  39. $dirsendfile = './download/usersfiles/'; //adres gdzie plik ma byc przesłany
  40. echo $dirsendfile.$name.'||'.$_FILES['a']['tmp_name'].'||'.$dirsendfile.$name.'/'.$_FILES['a']['name'];
  41. if(is_uploaded_file($_FILES['a']['tmp_name'])){
  42. if(!file_exists($dirsendfile.$name)){
  43. mkdir($dirsendfile.$name, 0666);
  44. }
  45. $dir = $dirsendfile.$name.'/'.$_FILES['a']['name'];
  46. if(move_uploaded_file($_FILES['a']['name'],$dir)){
  47. echo 'Plik został pomyślnie uploadowany!<br>';
  48. } else {
  49. echo '<font color="red">Błąd! Poinformuj admina!</font>';
  50. }
  51. } else {
  52. echo '<font color="red">Wystąpił błąd podczas wysyłania pliku na serwer! Poinformuj admina!</font>';
  53. }
  54.  
  55. }
  56.  
  57. ?>
  58. </td>
  59. </tr>
  60. </table>



Super działa... ale nie przenosi pliku(move_uploaded_file)... pomóżcie...
niby błędu nie ma ale nie przenosi..
tylko pokazuje:

Błąd! Poinformuj admina!
legorek
1) Sprawdź uprawnienia katalogów.
2) Spróbuj zamiast move_uploaded_file dać zwykłe copy" title="Zobacz w manualu php" target="_manual
3) Sprawdź konfiguracje serwera.
4) Daj na mnszę.

Aha już wiem:

47 linijka: $_FILES['a']['name'] zamień na $_FILES['a']['tmp_name']
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.