Fotky se občas neuloží po uploadu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jarda256
- Člen | 130
Ahoj, mám form ve kterém potřebuji aby mi uživatel nahrál fotku auta a já jí následně uložím, přidám záznam o souboru do db a připojím tento záznam ke správnému autu, ale občas se mi stane, že se fotka neuloží. Nevíte někdo proč.
osekal jsem to a zobrazil jen podstatné věci
nette 2.4 a doctrine
díky za rady
$form->addUpload('picture', $this->translate('ui.registrationRegCar.picture'))
->setRequired()
->setOption('description', $this->translate('ui.registrationRegCar.pictureDescription'))
->addRule(Form::IMAGE, $this->translate('ui.registrationRegCar.pictureImage'))
->addRule(Form::MAX_FILE_SIZE, $this->translate('ui.registrationRegCar.pictureSize'), 1024 * 1024 /* v bytech */);
$form->onSuccess[] = function (Form $form, $values) use ($onSuccess, $regId) {
if ($values->picture == NULL || !$values->picture->isOk() || !$values->picture->isImage()) {
$form->addError('Car picture invalid');
return;
}
try {
$this->registrationFacade->addCarToRegistration($regId, $values);
} catch (CarLimitException $e) {
$form->addError($this->translate('ui.messages.carlimitReached'));
return;
}
$onSuccess();
};
public function addCarToRegistration($id, $data)
{
$car = new Car();
if ($data->picture->isOk()) {
$fileName = $data->picture->getSanitizedName();
$fileNameExt = pathinfo($fileName, PATHINFO_EXTENSION);
$fileName = md5($id . 'registration' . $data->name) . '.' . $fileNameExt;
$filePath = UPLOAD_DIR . '/cars/' . $fileName;
$data->picture->move($filePath);
$fileUid = md5($id . 'registration');
$imageData = [
'name' => $fileName,
'path' => $filePath,
'uid' => $fileUid,
];
if ($data->picture->isImage()) {
$imageData['image'] = TRUE;
}
$imageData = ArrayHash::from($imageData);
$car->picture = $this->fileFacade->createFile($imageData);
}
$this->em->persist($car);
$this->em->flush();
}
- h4kuna
- Backer | 740
Pro jednoduché ukládání souborů jsem si udělal tento upload mohu se na to spolehnout, že mi uloží soubor na disk nebo vyletí exception. Tím je vyřešená jedná část, ta s uložením informací do db už je na tobě.