Ich benutze Symfony 3.2 und ich baue mein Formular mit Dateifeld, das nur jpg, jpeg, gif und png Erweiterungen akzeptiert. Leider kann ich kein Bild mit der Erweiterung .jpg hochladen, obwohl ich den Bild-/JPEG-Mime-Typ in erlaubten Mime-Typen erwähnt habe. Der Fehler "mimeTypesMessage" wird angezeigt.Ich kann kein JPG-Bild in mein Formular hochladen
Ich wäre dankbar, wenn Sie einen Blick darauf werfen würden.
DankImageType.php
/**
* Defines the form used to create and manipulate images.
*
* @author XXX
*/
class ImageType extends AbstractType {
/**
* Main function of the class.
*
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('title', TextType::class, array(
'label' => 'Tytuł',
'constraints' => [
new Length([
'min' => 3,
'max' => 128,
'minMessage' => 'Tytuł musi posiadać minimum 3 znaki.',
'maxMessage' => 'Tytuł może zawierać maksymalnie 128 znaków.',
]),
],
))
->add('file', FileType::class, array(
// 'mapped' => false,
'constraints' => [
new Image([
'maxSize' => '2M',
'maxSizeMessage' => 'Maksymalny rozmiar obrazka wynosi 2 MB. Wgraj mniejsze zdjęcie.',
'mimeTypes' => ['image/jpeg,', 'image/pjpeg', 'image/png', 'image/gif'],
'mimeTypesMessage' => 'Nieobsługiwany format pliku. Dozwolone rozszerzenia obrazków to: jpg, gif, png.',
'uploadErrorMessage' => 'Dodawanie obrazka zakończyło się niepowodzeniem.',
'minWidth' => 1000,
'minWidthMessage' => 'Minimalna szerokość obrazka to px',
'minHeight' => 1000,
'minHeightMessage' => 'Minimalna wysokość obrazka to px',
'maxWidth' => 1100,
'maxWidthMessage' => 'Maksymalna szerokość obrazka to px',
'maxHeight' => 1100,
'maxHeightMessage' => 'Maksymalna wysokość obrazka to px',
]),
],
))
->add('source', TextType::class, array(
'label' => 'Źródło',
'required' => false,
))
->add('reset', ResetType::class, array(
'label' => 'Reset'
))
->add('submit', SubmitType::class, array(
'label' => 'Zapisz'
))
;
}
/**
* Configures form options.
*
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Object::class,
]);
}
}
ObjectController.php
public function addImageAction(Request $request) {
$object = new Object();
// create form with multiple buttons
$form = $this->createForm(ImageType::class, $object)
->add('saveAndCreateNew', SubmitType::class);
// fill the object by values from the form (if submitted)
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$file = $object->getFile();
if(!$file->getError()) {
$ext = $file->guessExtension();
if ($ext == 'jpeg') {
$ext = 'jpg';
}
$object->setName(md5(uniqid()) . '.' . $ext);
$object->setFile($file->getClientOriginalName());
$object->setFormat($file->getMimeType());
} else {
$this->addFlash('danger', 'Wystąpił nieznany błąd w przesyłaniu formularza. Spróbuj ponownie.');
return $this->redirectToRoute('app_object_addimage');
}
// rest of form handling...
Was mir fremd ist, image/jpeg Mime-Typ nicht auf der IANA-Seite aufgeführt ist (http://www.iana.org/assignments/media-types/media-types.xhtml). Leider habe ich die Problemlösung noch nicht im Internet gefunden.
Überprüfen Sie die enctype. Es muss mutiPart sein – Carlos
Haben Sie versucht, .png-Dateien hochzuladen? Vielleicht ist das Problem, dass Ihr Formular keine Datei-Uploads erlaubt? – Merv
Jungs, es gibt keine Probleme mit PNG-und Gif-Dateien –