Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uploading
Forum PHP.pl > Forum > PHP
temakan
Cześć, nie mam pojęcia w ogóle o programowaniu itd. Potrzebuję stronkę, żeby potrzymać tam materiały z lekcji, bo pendrive i logowanie w szkole odpada - keylogery na komputerach.
Zrobiłem już stronkę na hasło (będę mógł sobie zmieniać z telefonu jakby co). I teraz potrzebuje zrobić tam coś by uploadować pliki. Przeczytałem trochę o tym php i zrobiłem takie coś, ale dalej nie działa. (Wszystkie foldery w ftp są 777).
  1. <?php
  2. $haha.gif=$_FILES['plik'];
  3. $r=rand(0, 1000);
  4. $k=$haha.gif.$r;
  5. move_uploaded_file($haha.gif,"/bazy/$k");
  6. print_r($_FILES); // Z TEGO WYSKAKUJE TO: Array ( [plik] => Array ( [name] => Bez tytułu.png [type] => image/png [tmp_name] => /tmp/php8RCUE1 [error] => 0 [size] => 135366 ) )
  7. ?>

  1. <form method="post" action="/folder/upload.php" enctype="multipart/form-data">
  2. <input name="plik" id="plik" type="file">
freemp3
W zmiennej "$xd" zapisujesz tablicę z informacjami o pliku, natomiast funkcja move_uploaded_file oczekuje ścieżki do pliku, który ma przenieść. Zatem powinieneś tam przekazać ścieżkę pliku tymczasowego, która jest pod kluczem "tmp_name".

Druga sprawa to nazwa nowego pliku w zmiennej "$k". Tam powinieneś z kolei użyć wartości, która jest pod kluczem "name".

Oprócz tego popraw ścieżkę do której zapisujesz plik, radził bym użyć czegoś w tym stylu "./bazy/$k". Bez tej kropki na początku funkcja będzie próbowała utworzyć katalog "bazy" w głównym katalogu systemu, a wątpię, żebyś miał do tego uprawnienia wink.gif
temakan
Cytat(freemp3 @ 27.04.2017, 11:26:43 ) *
W zmiennej "$xd" zapisujesz tablicę z informacjami o pliku, natomiast funkcja move_uploaded_file oczekuje ścieżki do pliku, który ma przenieść. Zatem powinieneś tam przekazać ścieżkę pliku tymczasowego, która jest pod kluczem "tmp_name".

Druga sprawa to nazwa nowego pliku w zmiennej "$k". Tam powinieneś z kolei użyć wartości, która jest pod kluczem "name".

Oprócz tego popraw ścieżkę do której zapisujesz plik, radził bym użyć czegoś w tym stylu "./bazy/$k". Bez tej kropki na początku funkcja będzie próbowała utworzyć katalog "bazy" w głównym katalogu systemu, a wątpię, żebyś miał do tego uprawnienia wink.gif

  1. <?php
  2. $haha.gif=$_FILES['plik']["tmp_name"];
  3. $r=rand(0, 1000); //zbedne narazie
  4. $k=basename($_FILES["plik"]["name"]);
  5. move_uploaded_file($haha.gif,"./bazy/$k");
  6. print_r($_FILES);
  7. ?>


W takim razie zrobiłem tak i nie działa dalej. Wyskakuje taka sama tablica.
bostaf
A spróbuj zamiast "./bazy/" podać całkowita bezwzględną ścieżkę docelową, np.: "/home/moj_id/bazy/"

Względna ścieżka "./bazy" ustawiana jest według aktualnego folderu roboczego php, i zamiast tam gdzie chcesz, czyli w "/home/moj_id/bazy/" plik może lądować w "/var/www/html/bazy" albo jeszcze gdzieś indziej.
temakan
Cytat(bostaf @ 27.04.2017, 22:41:45 ) *
A spróbuj zamiast "./bazy/" podać całkowita bezwzględną ścieżkę docelową, np.: "/home/moj_id/bazy/"

Względna ścieżka "./bazy" ustawiana jest według aktualnego folderu roboczego php, i zamiast tam gdzie chcesz, czyli w "/home/moj_id/bazy/" plik może lądować w "/var/www/html/bazy" albo jeszcze gdzieś indziej.

Niestety, wyskakuje taka tablica miałem wcześniej i nie uploaduje się plik.
bostaf
Dodaj na końcu - po print_r - taką linijkę i napisz nam co Ci wyświetla:
mortus
Skąd wniosek, że plik się nie uploaduje? Tablica $_FILES będzie się zawsze wyświetlać, bo przecież masz to w kodzie zapisane:
  1. print_r($_FILES);

Może Twoje pytanie powinno dotyczyć kwestii dostępu do wgranego pliku?
Niree
  1. <?php
  2. if(!empty($_FILES['upload']['name']))
  3. {
  4. // Loop through each file
  5. //Get the temp file path
  6. $tmpFilePath = $_FILES['upload']['tmp_name'];
  7.  
  8. //Make sure we have a filepath
  9. if ($tmpFilePath != "")
  10. {
  11. //Setup our new file path
  12. $_FILES["upload"]["name"] = str_replace(array( ' ', 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń', 'ę', 'ó', 'ą',
  13. 'ś', 'ł', 'ż', 'ź', 'ć', 'ń' ), array( '_', 'E', 'O', 'A', 'S', 'L', 'Z', 'Z', 'C', 'N', 'e', 'o', 'a',
  14. 's', 'l', 'z', 'z', 'c', 'n' ), $_FILES["upload"]["name"]);
  15. $_FILES["upload"]["name"] = str_replace(array( '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', '=', '~',
  16. '`', '"', "'", '<', '>', ',', '?', '/' ), array( '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_',
  17. '_', '_', '_', '_', '_', '_', '_', '_', '_', '_'), $_FILES["upload"]["name"]);
  18.  
  19. $newFilePath = dirname(__FILE__)."/" . $_FILES['upload']['name'];
  20. if(!is_dir(dirname(__FILE__)."/"))
  21. {
  22. mkdir(dirname(__FILE__)."/");
  23. }
  24. //Upload the file into the temp dir
  25. if(move_uploaded_file($tmpFilePath, $newFilePath))
  26. {
  27. echo 'wgrano '.$_FILES['upload']['name'].'</br>';
  28. }
  29. else
  30. {
  31. echo 'nie udało się wgrac pliku';
  32. }
  33. }
  34. }
  35. ?>
  36.  
  37. <form method="post" enctype="multipart/form-data">
  38. <input name="upload" type="file">
  39. </form>


Zapisz jako jeden plik np. index.php, pliki będą się wgrywały do katalogu w jakim jest index.php, prawa 755
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.