addUpload a podmínka xml souborů

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

Zdravím,
Na webu právě řeším upload xls souborů jenže nemůžu nějak přijít jak zajistit, aby se uploadovaly jen xls soubory

napsal jem takový kód, podmínky však nefungují v tomto případě nejdou odeslat žádné soubory aď už jsou xls nebo ne .. pokud nechám jen ten MIME_TYPE tak můžu nahrát jakýkoliv soubor, takže to nefunguje.

Díky Michal

$form->addUpload('file','')->addRule(Form::FILLED, 'Zdrojový soubor musí být vybrán.')
     ->addRule(Form::MIME_TYPE, 'Neplatný formát souboru', 'application/vnd.ms-excel')
  ->addRule(Form::PATTERN, 'Neplatný formát souboru', '\\.xls$');
s4muel
Člen | 92
+
0
-
addRule(Form::PATTERN, 'Neplatný formát souboru', '\\.xls$');

berie ako treti parameter regexp pattern, ktory validacna funkcia nasledne pouziva takto:

return (bool) Strings::match($control->getValue(), "\x01^($pattern)\\z\x01u");

https://api.nette.org/…ase.php.html#…
takze tam netreba davat $ ako koniec retazca (a asi ani ta lomka na zaciatku ‚\\.xls$‘ neviem na co je)

ale v tom problem nie je. ono totiz ten validatePattern pracuje s $control->getValue()
a ten vracia atribute tmpName a nie name (cize napr „/tmp/php2GxVUb“ namiesto „test.xls“)
https://api.nette.org/…oad.php.html#…

skusal som prave na nette 2.1 ten

addRule(Form::MIME_TYPE, 'Neplatný formát souboru', 'application/vnd.ms-excel');

a validacia (sice az na strane servera, ale predsa) funguje spravne. skus si dat vypisat ten mime-type, mne to iny typ suboru (png, csv) nezobralo a xlsx preslo OK

ps: v nazve topicu mas xml namiesto xls

Editoval s4muel (3. 2. 2014 14:48)