Upload von Symfony2-Dateien Schritt für Schritt

Ich bin immer noch lernen, Symfony2 und verstehe nicht, wie das hochladen einer Datei.

Mach dir keine sorgen, ich habe schon überprüft die Dokumentation. Es ist wirklich gut, aber mein problem ist nicht erklärt in jedem tutorial.

Ich bin auf der Suche nach Anleitung zum hochladen einer Datei mit Symfony2 aber mit der ganzen Sache, die jeder braucht (wie Einschränkung der Erweiterung, umbenennen der Datei basierend auf der id und Sachen, speichern Sie den Pfad in der db, etc...)

Fand ich gute tutorials, versuchte, vermischt Sie aber mit keinen Erfolg. Jedes mal ein anderes problem erscheint: die Datei re-uploads auf jedem Absenden des Formulars (auch wenn die Datei-Feld ist leer), guessExtension unmöglich, verwendet, tmp-Pfad in der Datenbank gespeichert, anstatt den rechten Pfad, Datei nicht verschoben, unmöglich, verwendet die id in das umbenennen, weil die id auf auto-increment und so noch nicht erzeugt).

So, ich ziehe mir eine "standard" - Entität, sagen wir: Photo.php

/**
 * Photo
 *
 * @ORM\Table(name="photo")
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class Photo
{
    //Annotation for the id and auto increment etc
    private $id;

    /**
     * @var string
     * @Assert\File( maxSize = "3072k", mimeTypesMessage = "Please upload a valid Image")
     * @ORM\Column(name="image", type="string", length=245, nullable=false)
     */
    private $image

    private $title

    private $description

    //all the function get, set for the 4 previous variables
}

und der controller:

public function addPhotoAction()
{
    $add_photo = new Photo;
    $formBuilderPhoto = $this->createFormBuilder($add_photo);
    $formBuilderPhoto
        ->add('title','text',array('label'  => 'Title of the photo', 'required' => true))
        ->add('image','file', array('required' => true, 'data_class' => null))
        ->add('description','textarea',array('label' => 'Description of your photo', 'required' => false))
    ;

    $form_photo = $formBuilderPhoto->getForm();

    if ($request->getMethod() == 'POST') {
        $form_photo->bind($request);
        if ($form_photo->isValid()) {
            //...
        }
    }
    return $this->render('MyBundle:frontend:photo.html.twig',
        array('form_photo' => $form_photo->createView())
    );
}

Weißt du jetzt, was sind die 'wichtige' Funktion hinzufügen, um der Lage sein, um das Foto hochzuladen und es umbenennen ?

Wie überprüfen Sie die Erweiterung, um zu sehen, ob der upload möglich ist?

Was ist Ihre tatsächliche Art und Weise zu tun, so eine Sache mit Symfony2? Ich weiß, es gibt eine Menge von Bundles, die all die Dinge tun für Sie, aber ich möchte lernen, es zu tun und zu verstehen, den Prozess.

Was ist die 'klassische' Weise zu implementieren, die eine Datei-upload-Formular, und benennen Sie die Funktion mit Symfony2?

InformationsquelleAutor der Frage Tyrael | 2013-07-30

Schreibe einen Kommentar