Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF]jak zapisac plik pod inna nazwa
wiewiorek
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


W Symfony żeby zapisać plik pod inną nazwą wystarczyło:
  1. $plik = $this->form->getValue('plik');
  2. $plik->save(sfConfig::get('sf_upload_dir'). DIRECTORY_SEPARATOR .'obrazki'. DIRECTORY_SEPARATOR .'inna_nazwa.jpg');


Jak to zrobic w ZF - robie tak:
  1. $upload = new Zend_File_Transfer_Adapter_Http();
  2. $upload->setDestination(APPLICATION_PATH.'/../public/uploads/obrazki');
  3. if (!$upload->receive())
  4. {
  5. echo "Błąd odbierania pliku.";
  6. }


Ale to mi zapisuje pod oryginalna nazwa. Znalazlem cos o rename - przemianowywaniu pliku, ale to mi nic nie da. Bo ja potem bede chcial zapisac ten sam plik i jak ja go zapisze potem drugi raz ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
zend
post
Post #2





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Niestety jedynym wyjściem w Twoim przypadku jest przeniesienie tego za pomocą funkcji php. Jeśli korzystasz z Zend_Form wepchnij tą logikę do klasy, wkońcu to przecież model smile.gif
Go to the top of the page
+Quote Post
Master Pain
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


Nieprawda, nie jedynym.
Zend_Filter_File_Rename smile.gif
Go to the top of the page
+Quote Post
wiewiorek
post
Post #4





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


To moge zrobic tak:
  1. $filterFileRename = new Zend_Filter_File_Rename(array('target' => $sciezka_uploadu.$nowa_nazwa, 'overwrite' => true));
  2. $filterFileRename->filter($sciezka_uploadu.$stara_nazwa);


I w ten sposób mam przemianowany plik. A jak w takim razie mogę go zapisać drugi raz z dopiskiem na początku 'mini_'. Bo dla kazdego zaladowanego pliki chce miec dwa zapisane pliki, jeden z normalna nazwa, a drugi z dopiskiem 'mini_' ? Bo chce potem zrobic miniature - wiec musze miec jeden obrazek w normalnych rozmiarach, a drugi mniejszy - czyli dwa pliki.

Ten post edytował wiewiorek 24.05.2010, 17:09:37
Go to the top of the page
+Quote Post
Master Pain
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


Pytasz zatem o coś zupełnie innego smile.gif

1) odbierasz obrazek (obojętnie jaka nazwa)
2) zapisujesz w katalogu, np.: 'images/big' (jako duże, oryginalne wielkości zdjęć)
3) korzystając z dobrodziejstw PHP i GD2 lub np klasy: phpThumb robisz miniatury i zapisujesz do docelowego katalogu, np .: 'images/small'

I to tyle. Tu nie chodziło o ten problem co opisałeś winksmiley.jpg Zawsze podaj dokładnie co chcesz zrobić.
Go to the top of the page
+Quote Post
wiewiorek
post
Post #6





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


ok - a jeszcze jedno pytanie: obecnie odbieram obrazek, zapisuje go pod oryginalna nazwa, zmieniam mu nazwe na unikalna - wygenerowana przeze mnie. Czy istnieje mozliwosc od razu zapisu obrazka pod wygenerowana przeze mnie unikalna nazwa z pominieciem zapisu obrazka pod oryginalna nazwa ?
Go to the top of the page
+Quote Post
Master Pain
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


Tak, Zend_Filter_File_Rename, o którym już wspomniałem, bo rozumiem, że o Zenda nadal się rozchodzi.
Go to the top of the page
+Quote Post
wiewiorek
post
Post #8





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


W jaki sposób mogę to zrobić, bo mam kod:
  1. $form = new Admin_Form_UploadObrazka();
  2. $this->view->form = $form;
  3.  
  4. if ($this->getRequest()->isPost())
  5. {
  6. $formData = $this->getRequest()->getPost();
  7. if ($form->isValid($formData))
  8. {
  9. $upload = new Zend_File_Transfer_Adapter_Http();
  10. $sciezka_uploadu = APPLICATION_PATH.'/../public/uploads/obrazki/';
  11. $upload->setDestination($sciezka_uploadu);
  12. if (!$upload->receive())
  13. {
  14. echo "Błąd odbierania pliku.";
  15. }
  16.  
  17.  
  18. $old_name = $upload->getFileName('plik', false);
  19. $mime_type = $upload->getMimeType('plik');
  20. $extension = $this->zwrocRozszerzeniePliku($old_name);
  21. $new_name = md5(uniqid(mt_rand(), true)).".".$extension;
  22.  
  23. $filterFileRename = new Zend_Filter_File_Rename(array('target' => $sciezka_uploadu.$new_name, 'overwrite' => true));
  24. $filterFileRename->filter($sciezka_uploadu.$old_name);


A na stronach, które przegladałem to wszędzie taki obrazek jak najpierw zapisywany pod oryginalną nazwą a dopiero potem przemianowywany:
http://ahsangill.wordpress.com/2009/02/17/...m_element_file/
http://www.thomasweidner.com/flatpress/2008/09/
http://stackoverflow.com/questions/380921/...naming-question

Ten post edytował wiewiorek 25.05.2010, 12:38:53
Go to the top of the page
+Quote Post
Master Pain
post
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

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


No to wrzuć go najpierw do jakiegoś temp'a, a potem przenieś do miejsca docelowego (przeniesienie ze zmianą nazwy). Już łatwiej nie idzie tego wytłumaczyć smile.gif
Go to the top of the page
+Quote Post
wiewiorek
post
Post #10





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


To mam dać: ->setDestination('c:\windows\temp') - to dziekuje, wole nie, zwlaszcza jak mialbym potem aplikacje przeniesc na serwer winksmiley.jpg Zostanę więc przy pierwotnym sposobie - najpierw zapis, potem zmiana nazwy, choć w Symfony zostało to rozwiązane zdecydowanie lepiej.

Ten post edytował wiewiorek 26.05.2010, 05:43:26
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




faktycznie lipa.... nie idzie ustawić jakiegoś prefiltra która najpierw ustali nową nazwę i dopiero potem zapisze w katalogu docelowym pod tą nazwą?
Im bardziej zagłębiam się w tego zenda tym bardziej widzę jakie to ustrojstwo niedopracowane :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pilsener
post
Post #12





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. Ścieżkę i nazwę pliku inną niż standardowa możesz zdefiniować w formularzu:
  1. ->addFilter('Rename', array('target'=>'justuploaded','overwrite'=>true));


2. Potem ten plik odbierasz i robisz z nim co chcesz:
  1. $picture = new Imagick($file);
- robisz miniatury i zapisujesz gdzie chcesz pod dowolną nazwą

3. Jeśli chcesz mieć od razu plik pod docelową nazwą to musisz wygenerować tą nazwę w formularzu lub przekazać do formularza jako parametr, ale moim zdaniem to żadna różnica, bo i tak plik trafia najpierw do "śmietnika" (bezpieczny folder) a dopiero po sprawdzeniu jest kopiowany i zapisywany do public.

4. Akurat problem z uploadem plików dotyczy tu czego innego - tmp_name jest taki sam jak oryginalna (lub ustawiona przez nas) nazwa pliku, mam nadzieję, że już to poprawili.

PS -> To tylko framework, jak czegoś nie ma albo nam nie odpowiada to piszemy sami, to tylko zestaw narzędzi, powiedzmy znalezionych u wujka w garażu, nie wszystkie są dobre i nowoczesne smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 15:38