Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> podejrzane działanie is_uploaded_file(), wykorzystanie is_uploaded_file() z if
yarexxx
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

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


Witajcie,

może ktokolwiek już się spotkał z podobną sytuacją: za pomocą is_uploaded_file() robię upload pliku przez formularz (type='file' name ='attach').
Skrypt wygląda tak:

  1. public function upload_single_file(){
  2.  
  3.  
  4. if(is_uploaded_file($_FILES['attach']['tmp_name']))
  5.  
  6. $this->file_path = "c:wamp/www/live/modules/hd/attachements/";
  7.  
  8. $this->file_itself = substr($_FILES['attach']['name'], 0, strrpos($_FILES['attach']['name'], ".")) . "_" . time() . "." . substr($_FILES['attach'] ['name'], strrpos($_FILES['attach']['name'], ".")+1);
  9.  
  10. move_uploaded_file($_FILES['attach']['tmp_name'], $this->file_path.$this->file_itself);
  11.  
  12. return $this->file_itself = "'".$this->file_itself."'";
  13. } else
  14.  
  15. {
  16. return $this->file_itself = "null";
  17.  
  18. }
  19.  
  20. }


Założenie jest takie, aby powyższa funkcja wywoływana przy SUBMIT formularza zwróciła nazwę pliczku jeżeli plik jest wysyłany lub null jeżeli pliku nie ma.
Problem polega na tym, że przy wskazaniu pliku (który na marginesie jest kopiowany do 'c:wamp/www/live/modules/hd/attachements/' i pojawia się tam) funkcja za każdym razem zwraca null - zarówno w przypadku kiedy plik ładujemy jak i w przypadku kiedy pliku nie ma.

Pls o spojrzenie 'świeżym okiem'.
(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


a nie brakuje Tobie klamry za IF'em?
Go to the top of the page
+Quote Post
yarexxx
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

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


Przeoczenie.. ale to nie to. Poniżej poprawiony kod, ta sama sytuacja..

  1. public function upload_single_file(){
  2.  
  3.  
  4. if(is_uploaded_file($_FILES['attach']['tmp_name']))
  5. {
  6.  
  7. $this->file_path = "c:wamp/www/live/modules/hd/attachements/";
  8.  
  9. $this->file_itself = substr($_FILES['attach']['name'], 0, strrpos($_FILES['attach']['name'], ".")) . "_" . time() . "." . substr($_FILES['attach']['name'], strrpos($_FILES['attach']['name'], ".")+1);
  10.  
  11. move_uploaded_file($_FILES['attach']['tmp_name'], $this->file_path.$this->file_itself);
  12.  
  13. return $this->file_itself = "'".$this->file_itself."'";
  14.  
  15. }
  16.  
  17. else {
  18. return $this->file_itself = "null";
  19. }
  20.  
  21. }
Go to the top of the page
+Quote Post
Zyx
post
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Pierwsze pytanie, jakie się ciśnie, brzmi: a jaki to ma związek z programowaniem obiektowym?

Znając życie, pewnie masz skopany sam kod formularza, któremu brakuje atrybutu enctype="multipart/form-datas", co zmienia zupełnie działanie PHP. Inna sprawa, że funkcja is_uploaded_file() potrzebna Ci jest, jak piernik wiatrakowi. Jej funkcjonalność jest w całości wbudowana w move_uploaded_file(), zatem w Twoim przypadku nie ma żadnego racjonalnego powodu by jej używać. Koncentrujesz się na takich bzdetach, a nie robisz dość oczywistego testu na to czy zmienna $_FILES['attach'] w ogóle istnieje.
Go to the top of the page
+Quote Post
yarexxx
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

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


Związek ma taki, że jest to metoda w klasie do obsług plików.
Formularz nie zawiera błędów, po za tym enctype="multipart/form-data".
Z is_uploaded_file korzystam ponieważ potrzebuję aby metoda zwróciła mi tekst także wtedy jeżeli plik nie jest załączany.

PS.

tak jak pisałem plik jest przesyłany na serwer. Ale metoda zawsze zwraca null...

Ten post edytował yarexxx 20.10.2010, 13:36:03
Go to the top of the page
+Quote Post
Zyx
post
Post #6





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Twój problem nie ma żadnego związku z programowaniem obiektowym, a to, że używasz metod, nie ma tu nic do rzeczy. Ponadto dokładnie ten sam efekt osiągniesz, stosując move_uploaded_file(). Jak wspomniałem, te funkcje są tożsame i w Twoim przypadku nie ma ŻADNEGO racjonalnego powodu, by używać is_uploaded_file(), a testowanie czy plik był załączany, jak również wspomniałem, powinno być robione w inny sposób.

Pierwsze to zrób sobie test:

  1. var_dump($_FILES);


by zobaczyć czy coś w ogóle dostajesz.

Go to the top of the page
+Quote Post
yarexxx
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

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


var_dump zwraca:

  1. array(1) {
  2. ["attach"]=> array(5)
  3. {
  4. ["name"]=> string(13) "Diagram1.jpeg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(23) "C:\wamp\tmp\phpFCD7.tmp" ["error"]=> int(0) ["size"]=> int(50377)
  5. }
  6. }


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: 16.09.2025 - 03:31