2016-08-26 5 views
0

, also richte ich ein kleines System ein, wo man auf einer Seite ein paar Bilder mit dem Input-Tag einträgt und dann, wenn man auf submit klickt, auf eine neue Seite geht Einträge.Erhalte ein Bild von einem _POST-Wert

Im Moment habe ich diesen Wert haben auf die zweite Seite geleitet wird:

$main_image   =$_POST['main_image']; 

Der Eingang für das Bild stammt aus der ersten Seite als dies:

<tr> 
    <th align="right">Main Photo</th> 
    <td><input type="file" name="main_image" size="30"></td> 
</tr> 

Allerdings, wenn ich setzen ein Bild unten am unteren Rand der Seite wie folgt aus:

<tr> 
    <th align="right">Main Rendering/Photo</th> 
    <td><img src="<?php echo $main_image; ?>" width="50px"></td> 
</tr> 

das Foto erscheint als littl Die leere Box mit dem fehlenden Bildsymbol.

Bekomme ich das Bild falsch, es falsch implementiert, oder was?

Jede Hilfe wird geschätzt, danke im Voraus.

+1

Stehen Sie mit 'hat < Eingabetyp = 'Datei' /> 'um die Bilder hochzuladen? Wenn dies der Fall ist, befinden sie sich im '$ _FILES'-Array von PHP, nicht im' $ _POST'-Array. Nachdem Sie die Bilder beim Hochladen erhalten haben, sollten Sie sie auch irgendwo ablegen und den Pfad zurückgeben, in den Sie sie verschoben haben (siehe '' move_uploaded_file() '-Funktion). –

+0

Siehe http://php.net/manual/ de/features.file-upload.post-method.php –

+0

können Sie uns den von Ihnen verwendeten Eingang zur Verfügung stellen? –

Antwort

0

Dies scheint nicht in der Art möglich zu sein, wie Sie es versuchen. Wenn eine Datei in die Variable $_POST gestellt wird, erhält sie einen temporären Namen für eine Datei, die nur sehr kurz lebt (wahrscheinlich nur bis zum Ende der anfänglichen Seitenanforderung und dann wird PHP sie bereinigen). Dies funktioniert nicht für ein -Tag, denn wenn der Browser auf der nächsten Seite geladen wird, wird der Browser eine separate Anfrage für diese Datei nach dem ersten Seitenladen durchführen, und sie wird nicht mehr dort sein.

Der richtige Weg, dies zu tun, ist move_uploaded_file() zu verwenden, um die Datei dauerhaft auf Festplatte zu speichern mit der tmp_name Variable in $_POST zur Verfügung gestellt. Dies bedeutet, dass Sie eine Möglichkeit finden müssen, das Problem zu verfolgen und potenziell zu bereinigen, wenn der Benutzer sich entscheidet, es nicht zu verwenden.

Ich wünschte, Ihr Ansatz könnte funktionieren. Es wäre sehr praktisch :)

+1

Dateien werden nicht innerhalb '$ _POST' platziert. –

0

Sie können Bilddateien nur mit codieren sie oder mit ändernden Content-Type-Header. Sie können es gerne tun:

$imageFile = $_FILES['yourInputTypeFileName']['tmp_name']; 
$imageFileContents = file_get_contents($imageFile); 
$withBase64 = base64_encode($imageFileContents); 
$imageType = substr($imageFile ,strrpos($imageFile, '.')+1, strlen($imageFile)); 
echo '<img src="data:image/'.$imageType.';base64,'.$withBase64.'"/>'; 
0

versuchen diese aber sicher zuerst, dass Ihre Form enctype="multipart/form-data" wie diese

<form action="" method="post" enctype="multipart/form-data"> 

dann diesen Code verwenden

<?php 
$size = getimagesize($_FILES['main_image']['tmp_name']); //get size 
$image = "data:" . $size["mime"] . ";base64," . base64_encode(file_get_contents($_FILES['main_image']['tmp_name'])); //get image 
echo '<img src="'.$image.'" />'; //outpout 
?> 
Verwandte Themen