Souboru zmizí po uploadu url
- Nodon
- Člen | 8
Ahoj, mám formulář ve kterém uploaduju několik obrázků. Na localhostu mě se vše funguje perfektně, ale jakmile nahraju aplikaci na web tak pokud mám uploadu nějakej validaci např. tak mi ji to neustále vyhazuje (soubor není obrázek, není vyplněno…) přitom ty samé obrázky na localhostu fungují bezvadně. Probíhá to tak že se soubor odešle ale pak jakoby neměl jméno, pokud jsi ji zkusím jeho jméno nic to nevypíše, ve složce kam se to má nahrát nic není… V logu se taky nic neukáže… Mám verzi Nette 2 stable.
- Nodon
- Člen | 8
Tady je kód:
protected function createComponentAddPlaceForm()
{
$types = array(
'Restaurace' => array(
'1' => 'Kavárna',
'2' => 'Pivnice',
'3' => 'Vinárna',
'4' => 'Restaurace',
'5' => 'Pizzerie',
'6' => 'Bar'
),
'Ubytování' => array(
'7' => 'Hotel',
'8' => 'Penzion'
));
$form = new Form;
$form->addText('name', "Název:")
->addRule(Form::MIN_LENGTH, 'Název musí mít minimálně 3 znaky.', 3)
->addRule(Form::MAX_LENGTH, 'Název může být maximálně 30 znaků dlouhý.', 30)
->addRule(Form::FILLED, 'Název není vyplněno.');
$form->addSelect('sub_type', 'Typ:', $types)
->setPrompt('Zvolte typ')
->addRule(Form::FILLED, 'Není zadán typ.');
$form->addTextArea('description', 'Popis(max. 10000 znaků):')
->addRule(Form::MIN_LENGTH, 'Popis musí mít minimálně 100 znaků.', 100)
->addRule(Form::MAX_LENGTH, 'Popis je příliš dlouhý', 10000)
->addRule(Form::FILLED, 'Název není vyplněno.');
$form->addText('adress1', "Ulice:")
->addRule(Form::MIN_LENGTH, 'Název ulice musí mít minimálně 3 znaky.', 3)
->addRule(Form::MAX_LENGTH, 'Název ulice může být maximálně 30 znaků dlouhý.', 30)
->addRule(Form::FILLED, 'Není vyplněna ulice.');
$form->addText('adress2', "Číslo popisné:")
->addRule(Form::MAX_LENGTH, 'Číslo popisné může být maximálně 30 znaků dlouhé.', 30)
->addRule(Form::FILLED, 'Není vyplněno číslo popisné.');
$form->addText('city', "Obec:")
->addRule(Form::MIN_LENGTH, 'Název obce musí mít minimálně 2 znaky.', 2)
->addRule(Form::MAX_LENGTH, 'Název obce může být maximálně 30 znaků dlouhý.', 30)
->addRule(Form::FILLED, 'Není vyplněn název obce.');
$form->addText('psc', "PSČ:")
->addRule(Form::MIN_LENGTH, 'PSČ musí mít minimálně 3 znaky.', 3)
->addRule(Form::MAX_LENGTH, 'PSČ může být maximálně 10 znaků dlouhé.', 10)
->addRule(Form::FILLED, 'Není vyplněno PSČ.');
$form->addText('www', "WWW:")
->addRule(Form::MAX_LENGTH, 'WWW adresa může být maximálně 10 znaků dlouhá.', 30);
$form->addText('mail', "Mail:")
->addRule(Form::FILLED, 'Mail není vyplněn.')
->addRule(Form::EMAIL, 'Mail není ve správném formátu.');
$form->addText('tel1', "Tel 1:")
->addRule(Form::MAX_LENGTH, 'Telefon 1 může být maximálně 10 znaků dlouhý.', 10);
$form->addText('tel2', "Tel 2:")
->addRule(Form::MAX_LENGTH, 'Telefon 2 může být maximálně 10 znaků dlouhý.', 10);
$form->addUpload('thumb', 'Náhledový obrázek:')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 5 MB.', 5000 * 1024 /* v bytech */);
$form->addUpload('img1', 'Obrázek 1:')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost obrázku 1 je 5 MB.', 5000 * 1024 /* v bytech */);
$form->addUpload('img2', 'Obrázek 2:')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost obrázku 2 je 5 MB.', 5000 * 1024 /* v bytech */);
$form->addUpload('img3', 'Obrázek 3:')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost obrázku 3 je 5 MB.', 5000 * 1024 /* v bytech */);
$form->addSubmit('add', 'Přidat objekt');
$form->onSuccess[] = callback($this, 'AddPlaceFormSubmitted');
return $form;
}
public function AddPlaceFormSubmitted(Nette\Application\UI\Form $form){
$values = $form->getValues();
$path = $this->context->params['appDir']."/img/";
$img = Array();
$file = $values["thumb"];
$info = @getimagesize($file);
if ($file->isOk() && !(empty($info))) {
$name = $path . md5($file->getName() . rand()) . time() . $file->getName();
$name_s = $path . md5($file->getName() . rand()) . time() . "small" . $file->getName();
$file->move($name);
$image = Image::fromFile($name);
$image->resize(NULL, 117);
$image->save($name_s);
$img[] = $name;
}
$file = $values["img1"];
$info = @getimagesize($file);
if ($file->isOk() && !(empty($info))) {
$name = $path . md5($file->getName() . rand()) . time() . $file->getName();
$file->move($name);
$img[] = $name;
}
$file = $values["img2"];
$info = @getimagesize($file);
if ($file->isOk() && !(empty($info))) {
$name = $path . md5($file->getName() . rand()) . time() . $file->getName();
$file->move($name);
$img[] = $name;
}
$file = $values["img3"];
$info = @getimagesize($file);
if ($file->isOk() && !(empty($info))) {
$name = $path . md5($file->getName() . rand()) . time() . $file->getName();
$file->move($name);
$img[] = $name;
}
$this->model->AddPlace($values, $this->getUser()->getId(), $img);
$this->flashMessage($name, 'success');
$this->redirect('Profile:');
}
}
Formulář nemá žádně rule pro upload protože když ho tam dám např. že musí být vyplněn nebo že to musí být obrázek tak mi to tu rule pořád vyhazuje jako by tam žádný obrázek ani nebyl.
Editoval Nodon (10. 2. 2012 13:00)
- Nodon
- Člen | 8
Tak jsem zkoušel v MultipleFileUpload Html4Singleupload a dělá mi to asi to samé, taky mě to trvadí že se to odeslalo ale když to po nahrání vypíše jaké soubory to nahrálo není tam ani jeden a v logu taky nic a na localhostu to jede. Jinak tady jsem spustil checker "":http://sepsemnapivo.cz/…/checker.php
Editoval Nodon (10. 2. 2012 13:55)
- Nodon
- Člen | 8
Zde je dump proměné $_FILES, vypadá to že tam jsou dva errory 6 a 4, podle definice prý UPLOAD_ERR_NO_TMP_DIR a UPLOAD_ERR_NO_FILE. No file bude asi tím že uploaduju pouze dva soubory z možných deseti takže proto NO FILE ale první dva které tam jsou mají NO_TMP_DIR. Co s tím?
array(11) { ["thumb"]=> array(5) { ["name"]=> string(12) "akinator.png" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(6) ["size"]=> int(0) } ["img1"]=> array(5) { ["name"]=> string(10) "eshop1.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(6) ["size"]=> int(0) } ["img2"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img3"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img4"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img5"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img6"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img7"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img8"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img9"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["img10"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } }
- duke
- Člen | 650
Mohlo by jít o to, že máš na hostingu nastaven safe mode a výchozí
upload_tmp_dir adresář neprojde kvůli omezení open_basedir.
Viz tento php
bugreport.