[addon multiplefileupload] MultipleFileUpload – form control

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Honza Kuchař
Člen | 1662
+
0
-

Budeš muset debugovat, tato informace mi bohužel nic neřekne.

despiq
Člen | 320
+
0
-

pokud si dobre pamatuju tak na linuxu je problem s flashem,
zkus jestli ti jde uploadify demo
 http://www.uploadify.com/demo/

RDPanek
Člen | 189
+
0
-

Pozor na snippety od verze Nette 1.0 dev, ze se zapisuji {snippet:form}{/snippet}. Proste misto mezery je dvojtecka.

Honza Kuchař
Člen | 1662
+
0
-

No pozor vůbec na snippety, ve verzi 1.0 je ten algoritmus na snippety značně jiný. Ale pokud vím, tak v Nette 1.0 je stále podpora i pro staré snippety.

despiq
Člen | 320
+
0
-

je

RDPanek
Člen | 189
+
0
-

no mě to teda nechtělo fungovat – tak nevím

RDPanek
Člen | 189
+
0
-

Ahoj, ještě jsem se chtěl zeptat, když vyberu obrázky, dám uložit, tak se mi občas u daného obrázku objeví IO Error – co je příčinou? Díky

RadH
Člen | 23
+
0
-

pracj3am napsal(a):

Demo nefunguje v Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.19) Gecko/2010033100 Iceweasel/3.0.6 (Debian-3.0.6–3)
Pouze tlačítko „Odeslat“, které po kliknutí nic nedělá.

Na linuxu (Ubuntu) jede demo http://www.uploadify.com/demo/ bez problémů.

Test na http://multiplefileupload.projekty.mujserver.net/ proběhl také bez problémů.

Linux = no problem :)

Testováno na:

Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9 FirePHP/0.4

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99

Honza Kuchař
Člen | 1662
+
0
-

Gaudentius napsal(a):

Ahoj, ještě jsem se chtěl zeptat, když vyberu obrázky, dám uložit, tak se mi občas u daného obrázku objeví IO Error – co je příčinou? Díky

Také bych rád věděl. :(

Vyki
Člen | 388
+
0
-

Tak se mi podařilo napasovat na MFU SWFUpload driver místo uploadify. Online demo je zde. Zdá se mi to spolehlivější než uploadify a hlavně o mnoho variabilnější. Na adrese http://demo.swfupload.org/v250beta3/ se můžete mrknout co všechno tato JS/SWF komponenta dokáže. V poslední beta verzi už je dokonce i podpora pro zmenšování obrázků na straně klienta. V podstatě jediné co jsem v MFU měnil byla šablona. Zatím jsem neřešil validace a pokročilé funkce, které tato hračička dokáže. Až se mi to podaří doladit dám to sem ke stažení.

Editoval Vyki (24. 7. 2010 0:45)

regiss
Člen | 61
+
0
-

Vyki napsal(a):

Tak se mi podařilo napasovat na MFU SWFUpload driver místo uploadify. Online demo je zde. Zdá se mi to spolehlivější než uploadify a hlavně o mnoho variabilnější. Na adrese http://demo.swfupload.org/v250beta3/ se můžete mrknout co všechno tato JS/SWF komponenta dokáže. V poslední beta verzi už je dokonce i podpora pro zmenšování obrázků na straně klienta. V podstatě jediné co jsem v MFU měnil byla šablona. Zatím jsem neřešil validace a pokročilé funkce, které tato hračička dokáže. Až se mi to podaří doladit dám to sem ke stažení.

Jo to vypada dost dobre, nechces udelat addon :)

Honza Kuchař
Člen | 1662
+
0
-

Počkejte s tím dalším addonem. V MFU je v plánu podpora driverů na straně klienta (Uploadify, swfupload, …) Pokud se to stane jedním z driverů, tak to bude mnohem přehlednější.

P.S.: Ten swfupload se mi tady chová tedy také dost zmateně.

Vyki
Člen | 388
+
0
-

Já to neměl ani v plánu dávat do addons. Chtěl jsem jen ukázat, že implementovat SWFUpload driver je docela jednoduchá věc. Zajímalo by mě jak chceš obecně vymyslet tu podporu více driverů na straně klienta. Každý z těch driverů je docela speficický, teď mám namysli zrovna Plupoload, který při komunikaci se skriptem očekává JSON response. Také každý z těch driverů umí různé věci, některé zmenšování fotek, některé odesílání po více vláknech a každý z nich k tomu přistupuje úplě jinak. Jde o to, že by každý z nich měl s MFU poskytovat stejné funkce a pohodlí jako při samostatné implementaci bez MFU. Myslím, že to bude docela fuška.

P.S.: V čem ti ten swfupload blbne? Zatím jsem to testoval na FF, IE8, IE6 a běhalo to v pohodě.

Editoval Vyki (24. 7. 2010 11:49)

Honza Kuchař
Člen | 1662
+
0
-

Asi takto, MFU si hlídá jen příjem souborů, který funguje tak, že každý driver na straně klientské má i svou serverovou část. Každá serverovo-klientská část má svou konfiguraci. Jinak to samozřejmě nejde. Pokusím se udělat nějou jednoduchou implementaci, nemělo by to být nic složitého.

V čem to blbne?

Ono to není ani problém swfuploadu, ale spíš neintegrace s formulářem, který přáve MFU+uploadify řeší. Tzn. kliknu na odeslat a formulář se fyzicky odešle, až se oduploudují VŠECHNY soubory. To ti se swfuploadem nefunguje. Ale když se podíváš, jak je to uděláno v MFU, tak zjistíš, že je to docela jednoduché.

RDPanek
Člen | 189
+
0
-

o spíš by jste mohli vyřešit, co dělá „IO Error“ a tojen někdy, místo novejch addonů. Když mi to vyodí IO Error, refresnu stránku, dm nahrávát stejné fotky a vše je cajk…

Honza Kuchař
Člen | 1662
+
0
-

To IO Error opravdu nevím co způsobuje a pěkně mě to štve, protože opravdu nevím co s tím. Asi přejít na ten swfupload.

RDPanek
Člen | 189
+
0
-

Ještě bych se zeptal – mám malý problém, pokud tovarnicku nacitam z podsablony:

{include 'dir/file.phtml'}

stav je takovy, ze vse probiha tak jak ma, ale uz jako by se mi neprovedl snippet – proste nedostanu vysledek., tzn. prijato tolik souboru a pod. V cem by mohl byt problem? Díky

Editoval Gaudentius (27. 7. 2010 19:09)

Honza Kuchař
Člen | 1662
+
0
-

Opravdu netuším, zkuste problém více rozepsat.

RDPanek
Člen | 189
+
0
-

Honza Kuchař napsal(a):

Opravdu netuším, zkuste problém více rozepsat.

Myslím že bude problém v renderování snippetů – protože šalonu, kde mám formulář pro nahrání souborů, který obsahuje snippety a příjmá vlastně výsledek celé operace.

Matúš Matula
Člen | 257
+
0
-

Nechybaju ti tam zavinace ?

pracj3am
Člen | 14
+
0
-

Honza Kuchař napsal(a):

Budeš muset debugovat, tato informace mi bohužel nic neřekne.

Aha, tak to bylo tím, že nemám flash player, v dokumentaci to chybí (pouze nepřímo). Bez flash playeru by se mohlo zobrazit to samé jako bez js.

Honza Kuchař
Člen | 1662
+
0
-

Ano, bez flash playeru by to mělo udělat přesně to, co jste popsal. Je to bug.

RDPanek
Člen | 189
+
0
-

Ahoj, mám menší problém se snippety ve spojitosti s tímto rozšířením. Mám aplikaci, kde používám toto rozšíření na dvou místech aplikace – na jednom místě používámj pro nahrávání fotografií a na druhém místě pro nahrávání videí (zatím nahrávám fotky i druhým rozšířením) https://forum.nette.org/…razdnym-json?…

Honza Kuchař
Člen | 1662
+
0
-

Nejspíš něco se zavináči. Ale předem říkám, že je to doplněk pro Nette 0.9.x a zatím nebyl testován pro Nette 1.0. Takže chybka se může vyskytnout i zde.

despiq
Člen | 320
+
0
-

byl testovan na 1.0 dev a v poradku funguje

revize d373555 released on 2010–04–14
divny oznaceni

Editoval despiq (3. 8. 2010 22:29)

Honza Kuchař
Člen | 1662
+
0
-

Prosím, ještě tam doplň revizi, ať je ten údaj o funkčnosti kompletní.

//EDIT: Díky, dokumentace se odkazuje na tvůj příspěvek.

Editoval Honza Kuchař (6. 8. 2010 9:17)

RDPanek
Člen | 189
+
0
-

Ahoj, potřeboval bych ještě pomoci rozchodit toto rozšíření, po nahrátí fotografie i malé velikosti se mi v políčku, kde je její název, tlačítko na zrušení a flashový ukazatel načítání, tak se mi při 100% ukáže HTTP Error – v čem by to mohlo být? Díky

RDPanek
Člen | 189
+
0
-

a apk ještě dostávám chybu: Class ‚SQLiteDatabase‘ not found i když používám mysql?!?

RDPanek
Člen | 189
+
0
-

Firebug mi ještě vyhazuje: Fatal Error</title><!-- Call to undefined function sqlite_escape_string() -->

RDPanek
Člen | 189
+
0
-

na localhostu vše bez problému funguje

Honza Kuchař
Člen | 1662
+
0
-

Nahoď xdebug a krokuj. Případně projdi logy a najdi, na kterém řádku to dělá. Jinak ti neumím poradit.

Honza Kuchař
Člen | 1662
+
0
-

Gaudentius napsal(a):

a apk ještě dostávám chybu: Class ‚SQLiteDatabase‘ not found i když používám mysql?!?

Podívej se do driveru, který doopravdy používáš.

RDPanek
Člen | 189
+
0
-

a jak mám zjistit který používám? měl jsem za to že dibi a mysql? žádný sqlite?

despiq
Člen | 320
+
0
-

mas v databazi tabulku files ?

RDPanek
Člen | 189
+
0
-

ano mám, nic v ní není… dokonce ani na localhostu jsem jí nepotřeboval – až když jsem aplikaci nasazoval na ostrá server, tak jsem zjistil, že se má nějaká tabulka v DB vytvořit, ale nic v ní není…

RDPanek
Člen | 189
+
0
-

Honza Kuchař napsal(a):

Nahoď xdebug a krokuj. Případně projdi logy a najdi, na kterém řádku to dělá. Jinak ti neumím poradit.

no a jak mám krokovat? na localhostu mi vše funguje, ale na hostingu ne :-(

RDPanek
Člen | 189
+
0
-

ještě mám náhled do logu hostingu:

[04/Aug/2010:23:37:13 +0200] "POST /aplikace/multimedia/detail-photo/?do=photoForm-submit HTTP/1.1" 500 93432

zjistil jsem, že hosting má zapnutý safe_mode – to by mohlo být ono – zkusím je požádat o vypnutí…

Editoval Gaudentius (4. 8. 2010 23:45)

Honza Kuchař
Člen | 1662
+
0
-

safe_mode je v pohodě. U mě na serveru je taky. Ale evidentně jsi nepochopil k čemu jsou tam ty drivery (ovladače) k jednotlivým databázím. Jedna používá SQLite (výchozí) a ta druhá Dibi (kterákoli db tě napadne). Stačí si je jen nakonfigurovat.

RDPanek
Člen | 189
+
0
-

ale tak letmý přehled mám, ale vůbec netuším, proč mi na hostingu začalo požadovat sqlite, když mysql tam mám – a nějaký letmý návod na konfiguraci – asi je to banalita, ale jsem tak trochu mísu

RDPanek
Člen | 189
+
0
-

v config.ini mám:

database.driver = mysql
...
...

v boostrat

dibi::connect((array)Environment::getConfig('database'));

a o pár řádku níže v tntýž souboru, tedy v bootstrapu

MultipleFileUpload::register();
MultipleFileUpload::$queuesModel = new MFUQueuesDibi();

a tabulkua files v MySql e prázdná…

takže je konfigurace ještě jinná?
Stále mi políčko, které ukazuje proběh nahrávání – po nahrání nezmizí a ukáže HTTP Error

Editoval Gaudentius (5. 8. 2010 13:10)

Honza Kuchař
Člen | 1662
+
0
-

Možná stará revize MFU? Zkus prostě krokovat. I na localhostu se ti to musí ukládat do té tabulky, jinak je něco špatně.

RDPanek
Člen | 189
+
0
-

Nene, nyní jsem stáhnul aktuální verzi z repozitáře – na localu v pohodě (tabulka sice prázdná, ale na autoincrement je nastaven na 8, takže se tam něco děje) – na serveru HTTP Error – ale co jsem zjistil ještě z logu:

[05-Aug-2010 20:05:18] PHP Warning:  move_uploaded_file(): SAFE MODE Restriction in effect.  The script whose uid is 1628 is not allowed to access /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/app/temp/uploads-MFU owned by uid 33 in /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/libs/Nette/Web/HttpUploadedFile.php on line 170
[05-Aug-2010 20:05:18] PHP Fatal error:  Uncaught exception 'InvalidStateException' with message 'Unable to move uploaded file '/tmp/php/phpMiDQDl' to '/home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/document_root/../app/temp/uploads-MFU/upload-4313317554c5afd4aed210-4c5afd5e8c109.tmp'.' in /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/libs/Nette/Web/HttpUploadedFile.php:171
Stack trace:
#0 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/app/controls/MultipleFileUpload/Models/SQLite/MFUQueueSQLite.php(19): HttpUploadedFile->move('/home/users/nas...')
#1 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/app/controls/MultipleFileUpload/MultipleFileUpload.php(176): MFUQueueSQLite->addFile(Object(HttpUploadedFile))
#2 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/app/controls/MultipleFileUpload/MultipleFileUpload.php(197): MultipleFileUpload::processFile('4313317554c5afd...', Object(HttpUploadedFile))
#3 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/app/controls/MultipleFileUpload/MultipleFileUpload.php(140): MultipleFileUpload::proccessUploadifyFiles()
#4 [internal function]: MultipleFileUpload::handleUploads(Object(Application))
#5 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/libs/Nette/Callback.php(120): call_user_func_array('MultipleFileUpl...', Array)
#6 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/libs/Nette/ObjectMixin.php(58): Callback->invokeArgs(Array)
#7 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/libs/Nette/Object.php(93): ObjectMixin::call(Object(Application), 'onStartup', Array)
#8 [internal function]: Object->__call('onStartup', Array)
#9 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/libs/Nette/Application/Application.php(101): Application->onStartup(Object(Application))
#10 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/app/bootstrap.php(99): Application->run()
#11 /home/users/nashosting/zzslk.nashosting.cz/web/_nette_multiple/document_root/index.php(13): require('/home/users/nas...')
#12 {main}

takže funkce move_upload_file() je zakázána – zkusil jsem požádat hosting o povolení – dáli mi pán bůh již klidného stáří v 25 letech, tak to bude ono…

RDPanek
Člen | 189
+
0
-

jinak nevím jak krokovat – ještě se mi nikdy nepodařilo zprovoznit nějakej Debugger :-( jest-li máš nějakej tip? xdebug mám nainstalovanej i v phpinfo je o něm zmínka, ale prostě nějak nekomunikuje z netbeans…

Honza Kuchař
Člen | 1662
+
0
-

Používám Netbeansy, ale pokud

  1. se ti v té tabulce nic neobjevuje, máš špatně driver. (v callstacku máš MultipleFileUpload/Models/SQLite/MFUQueueSQLite.php(19), tak mi netvrď, že máš DibiDriver) Podívej se do zdrojáků, myslím, že je to více než jasné.
  2. Ta hláška s move_uploaded_file je v pořádku. To hlásí na každém hostingu, pokaždé, když přesouváš soubor podruhé. Podívej se do zdrojáků Nette, konkrétně HttpUploadedFile->move(). Evidentně používáš nějakou histrorickou verzi Nette, podívej se do dokumentace MFU, je tam napsané, co pro kterou verzi Nette musíš udělat, aby MFU fungovalo.
RDPanek
Člen | 189
+
0
-

Ahoj, tak jsem zase o kus dále :-) HTTP error mi to už nevyhazuje, ale tentokrát mi to vrátí „0 přijatých souborů.“ :-) čím by to mohlo být? a v tabulce files zůstávájí vyset záznamy a žádné logy…

Honza Kuchař
Člen | 1662
+
0
-

Hele, asi takto. Zkus nejdříve zprovoznit MFU s výchozím driverem (SQLite), který používám pro vývoj a až ti to pojede, tak přehoď na DibiDriver a hledej chyby.

Ale 0 přijatých souborů znamená, že driver pro daný token nemá uložený žádný soubor, což je divné.

RDPanek
Člen | 189
+
0
-

No když to chci zprovoznit na SQLite

[06-Aug-2010 22:27:30] PHP Fatal error:  Class 'SQLiteDatabase' not found in /web/_nette_multiple/app/controls/MultipleFileUpload/Models/SQLite/MFUQueuesSQLite.php on line 78
[06-Aug-2010 22:27:30] PHP Fatal error:  Uncaught exception 'FatalErrorException' with message 'Class 'SQLiteDatabase' not found' in /web/_nette_multiple/app/controls/MultipleFileUpload/Models/SQLite/MFUQueuesSQLite.php:78
Stack trace:
#0 [internal function]: Debug::_shutdownHandler()
#1 {main}
Honza Kuchař
Člen | 1662
+
0
-

Potřeba si nainstalovat rozšíření pro PHP SQLite. Pokud vím, tak je dodáváno standardně v každé instalaci PHPka. Více informací zde: http://php.net/…k.sqlite.php

//EDIT: A podle despiqa: A to znamená? (Honza: Ano, to je pravda, potřeba nechat uživatele taky trochu přemýšlet)

Honza Kuchař
Člen | 1662
+
0
-

Jdi se prosím tě už vyspat. Nevidíš pořádně na ten příspěvek. Píšu na vývojové mašině. Tento text je reakcí na příspěvek, který už neexistuje. Uživatel ho smazal.

Ještě bych zapomněl. Dobrou noc přeji!

RDPanek
Člen | 189
+
0
-

Na localhostu funguje sqlite i dibidriver mysql

na php5.cz pouze dibidriver mysql – sqlite ne, i když podle phpinfo je instalovany
http://www.tests.php5.cz/document_root/

[06-Aug-2010 23:15:46] PHP Fatal error:  Class 'SQLiteDatabase' not found in /www/sites/6/site2396/public_html/app/controls/MultipleFileUpload/Models/SQLite/MFUQueuesSQLite.php on line 78
[06-Aug-2010 23:15:46] PHP Fatal error:  Uncaught exception 'FatalErrorException' with message 'Class 'SQLiteDatabase' not found' in /www/sites/6/site2396/public_html/app/controls/MultipleFileUpload/Models/SQLite/MFUQueuesSQLite.php:78
Stack trace:
#0 [internal function]: Debug::_shutdownHandler()
#1 {main}

na hostingu, ktery vyuzivam funguje jen dibidriver ale jen castecne, ze vraci „0 souboru“