Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Cake] Upload files / tmp
Randallmaster
post
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Witam,

Potrzebuje zrobić multiple upload plików, ale niestety nie wiem jak zabrać się za to w cakephp czy mógłby ktoś pomoc podpowiedzieć gdzie mogę o tym poczytać ?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A w czym problem?
Wrzucasz form do widoku, robisz akcje form na jakiś kontroler i tam standardowo obsługa uploadu (przykładny w manualu php)
Go to the top of the page
+Quote Post
czychacz
post
Post #3





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

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


A jakiego rodzaju "multiple upload plików" chcesz zrobić? Jakiś prosty? Jakiś bardziej rozbudowany? Jakiś z dynamicznym dodawaniem pól typu file?
http://book.cakephp.org/2.0/en/core-librar...lpers/form.html
Pierwszy to wstawienie ::file - tutaj problemów nie powinieneś mieć.
Drugi zależy od tego, co chcesz osiągnąć.
Trzeci może sprawiać problem, jeśli używasz Security.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Powiedzmy że już coś udało mi się zrobić:
Korzystam z tego:

http://blueimp.github.io/jQuery-File-Upload/

Bez cakephp biblioteka działa super tworzy tymczasowe pliki i można je łatwo odczytać.

Tylko teraz pytanie jak to przenieść do cakephp.

gdzie w cakephp zrobić przechowywanie plików dodatkowo poniższy skrypt odwołuje się do strony: '../server/php/,
Czyli stworzyć nowy controller i widok który to obsłuży ?

Gdzie w cakephp powinno się przechowywać pliki?
/webroot/files?

  1. // Initialize the jQuery File Upload widget:
  2. $('#fileupload').fileupload({
  3. // Uncomment the following to send cross-domain cookies:
  4. //xhrFields: {withCredentials: true},
  5. url: '../server/php/'
  6. });
  7.  
  8. // Enable iframe cross-domain access via redirect option:
  9. $('#fileupload').fileupload(
  10. 'option',
  11. 'redirect',
  12. window.location.href.replace(
  13. /\/[^\/]*$/,
  14. '/cors/result.html?%s'
  15. )
  16. );


Ten post edytował Randallmaster 12.08.2014, 09:18:28
Go to the top of the page
+Quote Post
czychacz
post
Post #5





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

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


Kod
$('#fileupload').fileupload({
        url: 'url_strony'
    });

z tego, co widzę, potrzebne Ci jedynie to, ale możesz dodać jakieś bajery, które są opisane w źródle dema.

Co do umieszczenia tego w kodzie cake - nie wiem, jaką masz strukturę swojej aplikacji, ale: tak, musisz obsłużyć to jakąś akcją w kontrolerze. Widok niekoniecznie będzie potrzebny, bo pliki idą ajax-em, więc będzie on tylko sprawiał problemy. Wyłączyć go możesz (o ile dobrze pamiętam)
Kod
$this->render(false);
albo
Kod
$this->render(null);
Ewentualnie poszukaj gdzieś na stack overflow - ja nie bardzo mam możliwość.

Do akcji dodajesz wywołanie takie, jak w https://github.com/blueimp/jQuery-File-Uplo...r/php/index.php
Kod
$upload_handler = new UploadHandler([tutaj opcje takie jak 'upload_dir']);

oczywiście po uprzednim załadowaniu tej klasy.
Nie jestem pewien, czy cake obsłuży takie żądanie bez problemów, ale jeśli programista, który utworzył tę bibliotekę, wiedział, co robi, to nie powinno być problemu.

Gotowcem całego kodu nie sypnę z wielu powodów. Głównym jest to, że już po pierwszym spojrzeniu widzę, że jakość tego rozwiązania pozostawia wiele do życzenia - może nie po stronie kodu, ale obsługi i dokumentacji.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


postaram się to zrobić a czy posiadasz dla cakephp jakieś rozwiązanie uploadów? Aby to działało tak jak w tym przykładzie?


Mógłbyś mi jeszcze odpowiedzieć na te pytania:
Gdzie w cakephp przechowywać pliki?
oraz czy pliki tymczasowe powinno zapisywać się do tmp?

Dziękuje czychacz smile.gif

Mogę powiedzieć że plugin działa smile.gif wystarczyło zrobić prawie to co napisałeś poza parą zmian w plikach smile.gif

Gdyby ktoś miał problemy proszę pisać smile.gif

Ten post edytował Randallmaster 12.08.2014, 10:43:12
Go to the top of the page
+Quote Post
czychacz
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

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


Cytat(Randallmaster @ 12.08.2014, 13:35:31 ) *
Gdzie w cakephp przechowywać pliki?

Filozofia nie różni się od przechowywania w przypadku innych frameworków. Pliki, które nie powinny być bezpośrednio udostępniane na zewnątrz, trzeba przechowywać w katalogu, do którego użytkownik zewnętrzny nie będzie miał dostępu (jakiś katalog typu 'jakaś_ścieżka/files' lub nawet podkatalog aplikacji cake - jednak w tym drugim przypadku trzeba uważać, żeby się bałagan nie zrobił).
Cytat(Randallmaster @ 12.08.2014, 13:35:31 ) *
oraz czy pliki tymczasowe powinno zapisywać się do tmp?

Na to pytanie odpowiedź jest oczywista - tak. Problemem jest tylko to, czy katalog będzie czyszczony w odpowiedni sposób (oczywiście preferowane jest użycie tmp php-owskiego - sprawia najmniej kłopotów).
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: 21.08.2025 - 13:45