PHP Bild hochladen und abspeichern

...komplette Frage anzeigen

2 Antworten

Hey (Frage gerade erst gesehn),

Du hast ja scheinbar rausgefunden wie du die Datei entgegennimmst und speichern kannst (move uploaded file). Sehr gut.

Zu deinen restlichen Fragen:

Wie ändere ich die Endung?

Du willst ein beliebiges Bild, das hochgeladen wurde ins PNG-Format formatieren? Dazu gibts die Funktion imagepng():

$result = imagepng(imagecreatefromstring(file_get_contents($filename)), "dein/zielpfad/datei.png");

Einfach die hochgeladene Datei damit konvertieren.

Können manche Bildformate mehr als PNG oder werden sie vlt. bei der Formatierung beschädigt (kein .gif oder so)

Wenn Bild-Dateien in ihrer Struktur beschädigt sind kann es natürlich sein, dass das konvertieren fehlschlägt (oder wenn etwas anderes als ein Bild hochgeladen wurde). In diesem Fall weißt du Bescheid, indem du den Rückgabewert von imagepng untersuchst. Wenn $result false ist, würde kein gültiges Bild hochgeladen. Bedenke, dass das Ändern der Dateiendung keine Konvertierung ist! Du hast dann immer noch ein JPG oder GIF, dessen Dateiname dann lediglich mit ".png" endet

Wieso spackt der "Hochladen"-Button so? (Text verschwindet nach anklicken) (Optional)

Soweit ich dein CSS und HTML gesehen habe hast du kein entsprechendes Verhalten definiert. Ich vermute daher, dass der Schuldige der Browser ist, der den Text ändert/löscht, nachdem er mit dem Senden begonnen hat (um den User daran zu hindern während des Sendevorgangs erneut eine Datei auszuwählen). Schau doch mal ob ein anderer Browser genauso reagiert (IE, Firefox, Chrome)

Antwort bewerten Vielen Dank für Deine Bewertung
Minding 14.11.2014, 19:15

Hi,

danke für deine Antwort!

Ich hab's jetzt mit Opera, Chrome, FF und IE ausprobiert - überall das gleiche Problem!

Ich hoffe mir kann jemand Helfen, ich nehm auch gerne andere CSS Vorschläge an und passe sie dann meinem Design an.

-Minding

0

Hi,

kleines Update:

PHP:

<?php
    include('../include/language.inc.php');
    include('../include/testSession.inc.php');
    include('../include/connect.inc.php');

    $image = $_FILES['image'];
    if(empty($_POST['ID']) || empty($_POST['description'])) {
        $_SESSION['error'] = $language['addErrorMissingData'];
        header('Location:report.php');
        die($language['addErrorMissingData']);
    }
    $path = "INSERT INTO bugs VALUES (NULL,'".$_POST['ID']."','".$_POST['description']."')";
    $mysqli->query($path)or die($mysqli->error);
    //Format in PNG ändern (bevorzugt) oder Datei-Endung in der DB speichern
    //Image unter dem Namen $mysqli->insert_id.png speichern
?>

Und zu dem CSS Problem das Bild:

-Minding

Vor dem anklicken. - (Bilder, HTML, CSS) Nach dem anklicken. (der text wurde mit <p> eingefügt) - (Bilder, HTML, CSS)
Antwort bewerten Vielen Dank für Deine Bewertung
Minding 07.11.2014, 17:47

Hi,

ich hab's mal wieder selbst gemacht und schreibe hier anscheinend nur mit mir selbst.
Nach einer langen Suche hab ich das hier gefunden:

move_uploaded_file($image['tmp_name'], $imagePath . $mysqli->insert_id . substr($image['name'], -4));

Jedoch will ich die Datei lieber als .png speichern.

Fragen:

  • Können manche Bildformate mehr als PNG oder werden sie vlt. bei der Formatierung beschädigt (kein .gif oder so)
  • Wie ändere ich die Endung?
  • Immer noch das kleine CSS Problem.

BITTE Antwortet mal jemand in diesem ##### ("gutem") Forum!!! :( (Oder schlägt ein besseres vor :D)

-Minding

0
Minding 08.11.2014, 12:32
@Minding

Hi,

ich schreibe immer noch mit mir selbst und zu meinen bisherigen Fragen:

1.) Die Bilder werden nicht beschädigt

2.) SO:

move_uploaded_file($image['tmp_name'], $imagePath . $mysqli->insert_id . '.png');

3.) Ungelöst!

Also die letzte Frage:

Wieso spackt der "Hochladen"-Button so?

-Minding

0

Was möchtest Du wissen?