[Frage] Mass Upload via media_upload - FAL TYPO3-Version: -

  • mbuchegger mbuchegge...
    Sternenflotten-Admiral
    0 x
    247 Beiträge
    0 Hilfreiche Beiträge
    02. 09. 2016, 16:01

    Hi Leute.

    Ich brauch ein System in dem ich via Drag & Drop viele Fotos hochladen kann. Einzelne Dateien hab ich bislang über das FileReference System von Helmut Hummel realisiert. Das funktioniert auch super. Theoretisch ist mir auch klar wie man mehrere Dateien hochladen kann, aber bei so ner richtigen Galerie will man, dass das ja automatisiert passiert und nicht Feld um Feld erzeugen und mit ner Datei füllen.

    Dazu habe ich jetzt media_upload gefunden, die das System http://fineuploader.com/ verwendet.

    Das ist auch ganz gut beschrieben und das Widget scheint so weit zu funktionieren, allerdings funktioniert dann der Controller scheinbar nicht. Liegt wohl auch daran, dass das via Ajax funktionieren sollte, und ich hier rein gar nichts dafür konfiguriert hab. Hab mit Ajax noch nie gearbeitet.

    Kann mir jemand sagen was an all dem so stimmt?

    Das Formular zum Upload liegt im Controller editDateien.
    Derzeit hab ich mal alle Arguments bis zum Model in dem die Fotos hinzugefügt werden übergeben. Das funktioniert in allen anderen Controllern auch prächtig.

    Hier liegt das Formular und es wird auch das Widget für den Upload generiert. So weit auch gut.

    Wenn ich jetzt Fotos auswähle wird gleich mal ein Ladebalken sichtbar, der das scheinbar auch wirklich hochlädt. Zumindest sagt mir das die Statusanzeige im Browser. Dann gib es allerdings ne Fehlermeldung: Upload failed Also eigentlich gar kein Hinweis.

    Da das ganze allerdings via Ajax funktionieren muss und ich hier gar nichts gemacht hab, kann ich mir gut vorstellen, dass das nicht funktioniert.

    Kann mir jemand sagen was alles gemacht werden muss, damit das funktioniert und mal in meinen Controller gucken, ob das grundsätzlich funktionieren kann?

    1. /**
    2.   * action editDateien
    3.   *
    4.   * @param \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil
    5.   * @param \Vendor\Extension\Domain\Model\Engagement $engagement
    6.   * @param \Vendor\Extension\Domain\Model\Multimedia $foto
    7.   * @param string $typ
    8.   * @param string $ziel
    9.   */
    10. public function editDateienAction(
    11. \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil,
    12. \Vendor\Extension\Domain\Model\Engagement $engagement,
    13. \Vendor\Extension\Domain\Model\Multimedia $foto) {
    14.  
    15. $this->view->assign('kuenstlerprofil',$kuenstlerprofil);
    16. $this->view->assign('engagement',$engagement);
    17. $this->view->assign('foto',$foto);
    18.  
    19. if ($this->request->hasArgument('typ')){
    20. $typ = $this->request->getArgument('typ');
    21. $this->view->assign('typ',$typ);
    22. }
    23.  
    24. if ($this->request->hasArgument('ziel')){
    25. $ziel = $this->request->getArgument('ziel');
    26. $this->view->assign('ziel',$ziel);
    27. }
    28.  
    29. }
    30.  
    31. /**
    32.   * action createDateien
    33.   *
    34.   * @param \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil
    35.   * @param \Vendor\Extension\Domain\Model\Engagement $engagement
    36.   * @param \Vendor\Extension\Domain\Model\Multimedia $foto
    37.   * @param string $typ
    38.   * @param string $ziel
    39.   */
    40. public function createDateienAction(
    41. \Vendor\Extension\Domain\Model\Kuenstlerprofil $kuenstlerprofil,
    42. \Vendor\Extension\Domain\Model\Engagement $engagement,
    43. \Vendor\Extension\Domain\Model\Multimedia $foto) {
    44.  
    45. /** @var array $uploadedFiles */
    46. $uploadedFiles = $this->uploadFileService->getUploadedFiles();
    47.  
    48. # A property name is needed in case specified in the Fluid Widget
    49. # <mu:widget.upload property="foo"/>
    50. $uploadedFiles = $this->uploadFileService->getUploadedFiles('dateien');
    51.  
    52. # Process uploaded files and move them into a Resource Storage (FAL)
    53. foreach($uploadedFiles as $uploadedFile) {
    54.  
    55. /** @var \Fab\MediaUpload\UploadedFile $uploadedFile */
    56. $uploadedFile->getTemporaryFileNameAndPath();
    57.  
    58. $storage = ResourceFactory::getInstance()->getStorageObject(1);
    59.  
    60. /** @var File $file */
    61. $file = $storage->addUploadedFile(
    62. $uploadedFile->getTemporaryFileNameAndPath(),
    63. $storage->getRootLevelFolder(),
    64. $uploadedFile->getFileName(),
    65. 'changeName'
    66. );
    67.  
    68. // Create File Reference
    69. $newFileReference = $this->objectManager->get('AArtists\\AaosSystem\\Domain\\Model\\FileReference');
    70. $newFileReference->setFile($file);
    71. $foto->setDateien($newFileReference);
    72. }
    73.  
    74. }

    Ja so weit so gut. Wie gesagt... Jetzt stellt sich die Frage wie das mit Ajax funktionieren soll.

    Das ist übrigens media_upload.
    Hier zu finden: https://github.com/fabarea/media_upload

    lg M.


  • 1
  • mbuchegger mbuchegge...
    Sternenflotten-Admiral
    0 x
    247 Beiträge
    0 Hilfreiche Beiträge
    03. 09. 2016, 00:02

    So. Hab jetzt im Protokoll mal Fehlermeldungen bekommen.

    Zuerst müsste das mal in einen eigenen Controller. Ich übergebe nämlich einzelne Uploads derzeit über HELHUMs Beispiel. Da in dem Fall ein eigener FileReferenceController verwendet wird, gibt's da gleich mal nen Fehler, dass er den nicht verwenden kann.

    Den Fehler hab ich beseitigt.

    Jetzt meint er...
    Class 'Fab\MediaUpload\Dimension' not found

    Hab danach mal gesucht, weil ich keine Ahnung hatte was das sein soll, und hab es im Resize File in der Fab Extension gefunden. Checke aber nicht wirklich was er damit macht. Wie der Dateiname schon sagt ist es in jedem Fall auf irgend eine Art und Weise für eine Änderung der Bildgröße verantwortlich.

    Hat da jemand ne Idee wie ich das löse?

    Lg M

  • 1