Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z funkcją uploadownia plików przez formularz
jacusek
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam.
Na początek chciałem powiedzieć że jestem prawie kompletnie zielony w PHPie. Napisałem taki skrypt:
<?php
$file_dir = 'http:\xampp\uploads';
foreach($_FILES as $plik_nazwa => $plik_tablica) {
echo "ścieżka: ".$plik_tablica["tmp_name"]."<br/>\n";
echo "nazwa: ".$plik_tablica["name"]."<br/>\n";
echo "typ: ".$plik_tablica["type"]."<br/>\n";
echo "rozmiar: ".$plik_tablica["size"]."<br/>\n";
if (is_uploaded_file($plik_tablica["tmp_name"])) {
move_uploaded_file($plik_tablica["tmp_name"],
$file_dir) or die ("Nie można przenieść pliku");
echo "Plik został przeniesiony!<br/><br/>";
}
}
?>
No właśnie. Problem jest w 2. linijce. Kiedy podane jest to w ten sposób zapisuje mi plik, ale pod tą nazwą i w danej lokalizacji. Czyli otrzymuje plik o nazwie uploads bez żadnego rozszerzenia. Jeżeli próbuję zakończyć to w innych sposób (tak jakbym wskazywał mu katalog
$file_dir = 'http:\xampp\uploads\';
to niestety wywołuje mi błąd składni. Kombinowałem już w różne strony, z adresami http i niestety nic to nie daje, a chodzi mi żeby można było przenosić plik do innego katalogu. W niektórych przypadkach (zastosowanie z adresem http) dostaje komunikat HTTP wrapper does not support writeable connections.
Pracuje na maszynie wirtualnej WIN_XP ze środowiskiem XMAPPa.
Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
InosU31
post
Post #2





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


hmm moim zdaniem masz zle sciezke ustawiona bo :

$file_dir = 'http:\xampp\uploads';

powinno byc zapisane :

$file_dir = 'http://xampp/uploads';

pozatym tam jak robisz to wszystko na localhoscie to nie podawaj pelnej sciezki tylko jak masz plik np. uload.php w katalogu np. "upload" a pliki w "pliki" to w sciezce powinienes dac : $file_dir = "pliki/";

druga sprawa nie wiem czy foreach ci przetworzy ta tablice $_FILES bo ona ma dwa indeksy : jeden to nazwa a drugi wartosc.

$_FILES ['name_z _formularza']['wartosc']

pozatym masz cos takiego :

echo "ścieżka: ".$plik_tablica["tmp_name"]."<br/>\n";

a "tmp_name" to chyba jest nazwa pliku tymczasowego a nie sciezka;-)

i kolejna sprawa jest taka ze on ci pewnie zapisuje pliki jako uploads bo tak mu ta nazwe podales;-)

  1. move_uploaded_file($plik_tablica["tmp_name"],
  2. [u] $file_dir[/u])


zobacz to tak :

  1. $file_dir = "uploads/"; // nazwa katalogu w ktorym beda umieszcane pliki
  2. $nazwa_pliku = "tutaj wstaw jak plik ma sie na serwerze nazywac";
  3. //$_FILES ['name'] - zamiast name wstaw nazwe jaka masz w formularzu dla tego pola
  4. echo "ścieżka: ".$file_dir."<br/>\n";
  5. echo "nazwa: ".$_FILES ['name']['tnp_name']."<br/>\n"; // nazwa tymczasowa
  6. echo "typ: ".$_FILES ['name']['type']."<br/>\n";
  7. echo "rozmiar: ".$_FILES ['name']['size']."<br/>\n";
  8. if (is_uploaded_file($_FILES ['name']['tnp_name']))
  9. {
  10. move_uploaded_file($_FILES ['name']['tnp_name'],
  11. $nazwa_pliku)
  12.  
  13. // ewentualnie
  14. // move_uploaded_file($_FILES ['name']['tnp_name'], $_FILES['name'] ['name']) // to pierwsze name to nazwa z formularza pola name
  15.  
  16. echo "Plik został przeniesiony!<br/><br/>";
  17. }
  18. else echo "Nie mozna przeniesc pliku";
  19.  
  20.  


Pozdrawiam
Go to the top of the page
+Quote Post
jacusek
post
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam ponownie. Dziękuję za pomoc, ale niestety nadal nie jest to o co mi chodzi. I tak cały czas zapisuje mi to do pliku zamiast do katalogu.
Użyłem też twojego skryptu, ale niestety także nie działa (IMG:style_emoticons/default/sad.gif) - cały czas przenosi plik w niebyt (IMG:style_emoticons/default/sad.gif)
Ba dostaje komunikat że plik się przeniósł, mimo że zrobiłem błąd w ścieżce.
Podam może jeszcze kod html - i może tam robię jakiś błąd. Już szczerze mówiąc nie wiem gdzie szukać. Tak jak pisałem wcześniej dopiero uczę się PHP i stąd może moje głupie pytania:

  1. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">
  2. <title>Przesyłanie pliku przez formularz</title>
  3. </head>
  4. <form action="wyslij_plik.php" enctype="multipart/form-data" method="post">
  5. <input type="hidden" name="MAX_FILE_SIZE" value="51200">
  6. <p><strong>Pliki do wysłania:</strong>
  7. <input type="file" name="plik"></p>
  8. <p><input type="submit" value="Wyślij"></p>
  9. </form></body></html>


i dodatkowo "nowy" kod php
  1. <?php
  2. $file_dir = 'uploads/';
  3. $nazwa_pliku = "przeniesiony";
  4. $_FILES ['plik'];
  5. echo "ścieżka: ".$file_dir."<br/>\n";
  6. echo "nazwa: ".$_FILES['plik']['tmp_name']."<br/>\n"; // nazwa tymczasowa
  7. echo "typ: ".$_FILES ['plik']['type']."<br/>\n";
  8. echo "rozmiar: ".$_FILES ['plik']['size']."<br/>\n";
  9. if (is_uploaded_file($_FILES ['plik']['tmp_name']))
  10. {
  11. move_uploaded_file($_FILES ['name']['tmp_name'],
  12. $nazwa_pliku);
  13. echo "Plik został przeniesiony!<br/><br/>";
  14. }
  15. else echo "Nie mozna przeniesc pliku";
  16. ?>


W przeglądarce otrzymuje taki komunikat:
ścieżka: uploads/
nazwa: C:\XAMPP\tmp\phpE2.tmp
typ: application/vnd.ms-excel
rozmiar: 38912
Plik został przeniesiony!
Więc niby wszytko w porządku. Tylko gdzie ten plik się podziewa??
Z góry dzięki za pomoc.

Ten post edytował jacusek 29.10.2009, 20:18:00
Go to the top of the page
+Quote Post
Blame
post
Post #4





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Po pierwsze to bbcode. A po drugie to nie mam pojęcia skąd skrypt ma wiedzieć do jakiego katalogu przenieść plik, skoro mu go nie podajesz?
  1. <?php
  2. $file_dir = 'uploads/';
  3. $nazwa_pliku = "przeniesiony";
  4. $_FILES ['plik'];
  5. echo "ścieżka: ".$file_dir."<br/>\n";
  6. echo "nazwa: ".$_FILES['plik']['tmp_name']."<br/>\n"; // nazwa tymczasowa
  7. echo "typ: ".$_FILES ['plik']['type']."<br/>\n";
  8. echo "rozmiar: ".$_FILES ['plik']['size']."<br/>\n";
  9. if (is_uploaded_file($_FILES ['plik']['tmp_name']))
  10. {
  11. move_uploaded_file($_FILES ['name']['tmp_name'], $file_dir.$nazwa_pliku); //<-tu był błąd
  12. echo "Plik został przeniesiony!<br/><br/>";
  13. }
  14. else echo "Nie mozna przeniesc pliku";
  15. ?>


Ten post edytował Blame 29.10.2009, 19:03:22
Go to the top of the page
+Quote Post
jacusek
post
Post #5





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


niestety i to nie pomogło. Nadal plik zapisuje się w niebyt, więc już kompletnie nie mam pomysłu gdzie może być błąd. Skrypt oczywiście poprawiłem. Przypuszczam, że błąd jest gdzieś w składni przy katalogu, ale chyba próbowałem już wszystkich wersji zapisu ścieżki do katalogu i nadal nic. (IMG:style_emoticons/default/sciana.gif)
Może jeszcze jakieś propozycje?
Go to the top of the page
+Quote Post
thomson89
post
Post #6





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Nie wiem czy to pomoże. Spróbuj dać " // " na początku sciezki. Bo twoim serwerem, np. jest folder: d:/dysk admin/serwer pliki/
Danie "//" spowoduje cofnięcie się do poczatku katalogów serwera, czyli "będziesz" w katalogu serwer pliki/

Jeżeli folder upload masz w d:/dysk admin/serwer pliki/stronka_1/uploads/
Do zmiennej daj: "//stronka_1/uploads/"

Oraz

i sprawdź errory czy są

aaa, i jeszcze jedno jak masz kod swojej funkjci php "sa8f=43hfubbfvbhar8o34htfbgap"
to dawaj go w bbcody, np:

Kod
[php]sa8f=43hfubbfvbhar8o34htfbgap[/php]


Może pomoze.

Ten post edytował thomson89 29.10.2009, 20:11:38
Go to the top of the page
+Quote Post
InosU31
post
Post #7





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


No witaj

Juz wszystko wiem;-) Znaczy sie mi dziala to poprawnie - o to pliki:

1. Musisz utworzyc plik dwa pliki i folder :

np. (ten pierwszy jest opcjonalny - mozesz nazwac go jak chcesz)

form.htm
  1. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">
  2. <title>Przesyłanie pliku przez formularz</title>
  3. </head>
  4. <form action="wyslij_plik.php" enctype="multipart/form-data" method="post">
  5. <input type="hidden" name="MAX_FILE_SIZE" value="51200">
  6. <p><strong>Pliki do wysłania:</strong>
  7. <input type="file" name="plik"></p>
  8. <p><input type="submit" value="Wyślij"></p>
  9. </form></body></html>


druki plik to :
wyslij_plik.php - na czas testow niech bedzie sie tak nazywal bo formularz sie do niego odnosi:
  1. <?php
  2.  
  3. $file_dir = 'uploads/';
  4. //$nazwa_pliku = "przeniesiony";
  5. //$_FILES ['plik'];
  6. echo "ścieżka: ".$file_dir."<br/>\n";
  7. echo "nazwa: ".$_FILES['plik']['tmp_name']."<br/>\n"; // nazwa tymczasowa
  8. echo "typ: ".$_FILES ['plik']['type']."<br/>\n";
  9. echo "rozmiar: ".$_FILES ['plik']['size']."<br/>\n";
  10. if (is_uploaded_file($_FILES ['plik']['tmp_name']))
  11. {
  12. move_uploaded_file($_FILES ['plik']['tmp_name'], $file_dir.$_FILES['plik']['name']);
  13. echo "Plik został przeniesiony!<br/><br/>";
  14. }
  15. else echo "Nie mozna przeniesc pliku";
  16.  
  17. echo $file_dir.$_FILES['plik']['name']; // wyswietli nazwe pliku przeniesionego wraz z sciezka
  18. ?>


i katalog o nazwie: uploads - musi sie on znajdowac tam gdzie te pozostale pliki - pozniej sobie inaczej anzwiesz pliki i katalog a narazie sprobuj czy ci zadziala i pozniej napisz;-)

u mnie wszystko ok

Pozdrawiam
Go to the top of the page
+Quote Post
jacusek
post
Post #8





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


No wielgachne dzięki. Pół dnia na tym siedziałem. (IMG:style_emoticons/default/smile.gif) .
okazało się, że rzeczywiście zmienna
  1. $nazwa_pliku
w ogóle nie była potrzebna. Na to nie wpadłem (IMG:style_emoticons/default/wstydnis.gif) . Ale początki bywają takie trudne....
Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 23:41