Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild Upload mit ImageMgaick

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bild Upload mit ImageMgaick

    Hallo,
    auf meiner Internetseite habe ich ein Formular, mit welchem man Bilder hochladen kann. Lade die Bilder jetzt neuerdings statt mit move_upload_file() , gleich mit ImageMagick hoch. Hat auch alles super geklappt, doch auf einmal funktioniert das ganze nicht mehr. Meine Vermutung ist, dass der Arbeitsspeicher oder so voll ist.

    Vorher:
    move_uploaded_file($_FILES['bild']['tmp_name'], 'ordner/bildname.jpg');

    Aktuell:
    $MAGIC_convert = '/usr/bin/convert ';
    $cmd = $MAGIC_convert.$_FILES[$datei]['tmp_name'].' ordner/bildname.jpg;
    exec($cmd, $output);

    Der vorteil hier war, dass die Bilder gleich in das gewünschte Format: JPEG umgewandelt worden sind egal ob ich nen GIF PDF usw. hochgeladen habe.

    PS: Wo wird eigentlich beim upload die Datei $_FILES[$datei]['tmp_name'] gespeichert und wird diese automatisch wieder gelöscht oder wie Funktioniert das ganze?


  • #2
    wilkommen im forum!
    1.) es gitb code tag zum posten von quellcode:

    Vorher:
    PHP-Code:
    move_uploaded_file($_FILES['bild']['tmp_name'], 'ordner/bildname.jpg'); 
    Aktuell:
    PHP-Code:
    $MAGIC_convert '/usr/bin/convert ';
    $cmd $MAGIC_convert.$_FILES[$datei]['tmp_name'].' ordner/bildname.jpg;
    exec($cmd, $output); 
    2.) ich sehe an dem problem noichts forgeschrittenes.
    3.) hat dein rechner convert/bzw imagemagick installiert?
    4.) stimmt auch der pfad?
    5.)sowas geht auch mit gd
    6.) http://php.net/manual/de/reserved.variables.files.php
    7.) man kann imagemgick auch direkt in php benützen
    http://php.net/manual/de/class.imagick.php

    Kommentar


    • #3
      Vielen Dank für die schnelle Antwort.

      Auf dem Server ( Managed Server bei Strato ) auf dem ich den Script ausführe ist ImageMagick installiert und funktioniert auch. Die funktion imagick() allerdings ist nicht in PHP bereitgestellt. Habe mit genau diesem Script auch schon mehrere Bilder hochgeladen und bearbeitet. Bis es auf einmal nicht mehr ging.

      Habe jetzt auch heraus gefunden wieso:
      während des Uploads, wird die Datei im tmp Ordner gespeichert, dann von ImageMagick bearebitet und neu gespeichert:

      PHP-Code:
      $MAGIC_convert '/usr/bin/convert ';
      $cmd $MAGIC_convert.$_FILES[$datei]['tmp_name']. ordner/bildname.jpg;
      exec($cmd$output); 
      Aber leider danach nicht aus dem tmp Ordner gelöscht, so dass dieser jetzt voll ist und somit nichts mehr hochgeladen werden kann.
      Vermute, dass dies bei move_upload_file() automatisch geschiet???

      Wie kann ich die Dateien aus dem tmp Ordner nach der Bearbeitung mit imagemagick wieder löschen oder werden diese nach einer bestimmten Zeit von alleine gelöscht?

      - hatte überlegt einen anderen pfad in der php.ini (upload_tmp_dir) an zu geben, habe allerdings nur sehr beschränkte rechte und kann diese nicht ändern.

      - möchte auch eigentlich nicht erst die datei mit move_upload_file() speichern und dann mit ImageMagick in JPEG umwandeln.

      Kommentar


      • #4
        muiss das nicht so heissen?
        PHP-Code:
        $cmd $MAGIC_convert.$_FILES[$datei]['tmp_name']. "ordner/bildname.jpg"
        danach löschen? unink() http://php.net/manual/de/function.unlink.php

        Kommentar


        • #5
          Ja da hast du recht.
          Habe ich allerdings hier nur vergessen.
          der Script ansich funktioniert auch einwandfrei bis auf, dass der tmp ordner vollgestopft wird bis nichts mehr hochgeladen werden kann.

          kann ich denn mit unlick() auf dem tmp ordner zugreifen?
          also:

          PHP-Code:
          unlink($_FILES[$datei]['tmp_name']); 
          glaube irgendwie nicht...
          kann es auch leider nicht ausprobieren, da ich ja nichts mehr hochladen kann.

          Kommentar


          • #6
            Zitat von Philipp87 Beitrag anzeigen
            (...)
            glaube irgendwie nicht...
            kann es auch leider nicht ausprobieren, da ich ja nichts mehr hochladen kann.
            glauben?
            und wieso nicht?

            Zitat von http://unix.stackexchange.com/questions/74460/how-to-automatically-cleanup-failed-php-uploads-in-tmp

            A better way would be to edit your server's php-ini file and set the variable upload_tmp_dir. That way, you can just delete everything in that directory. For example, if you set this in your php.ini:
            Code:
            upload_tmp_dir=/tmp/phptmp
            You can then simply remove all files from the folder:
            Code:
            rm  /tmp/phptmp/*

            Kommentar


            • #7
              Habe nur Rechte für das Verzeichnis htdocs.
              Habe jetzt mal meinen Provider angeschrieben, damit er mir den temporären Ordner leert.
              Und hoffentlich auch in der php.ini upload_tmp_dir ändert, damit ich den tmp Ordner in htdocs habe und somit auch selbst leeren kann falls notwendig.
              Dann funktioniert auch auf jeden Fall unlink() nach dem Upload.
              Vielleicht löschen sich die Bilder aus dem tmp Ordner auch nach einer bestimmten Zeit von alleine!?

              Kommentar

              Lädt...
              X