2017-06-12 5 views
-1

Ich möchte während des Hochladens des Bildes Thumbnails erstellen, ich habe ein Upload-Skript erstellt.Thumbnail nach Bildseitenverhältnis erstellen, während Bild mit php hochladen

<?php 
if (isset($_POST['upload'])) { 
$target = "./img/".basename($_FILES['image']['name']); 

$image = $_FILES['image']['name']; 

$sql = "INSERT INTO `image`(`image`) VALUES ('$image')"; 
mysqli_query($connection, $sql); 

if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) { 
$smsg = "Image Uploaded Successfuly"; 
}else { 
$fmsg = "An Error Occure During Upload"; 
} 

} 
?> 

und Bildgröße anpassen Skript:

function resize($newHeight, $targetFile, $originalFile) { 

$info = getimagesize($originalFile); 
$mime = $info['mime']; 

switch ($mime) { 
     case 'image/jpeg': 
       $image_create_func = 'imagecreatefromjpeg'; 
       $image_save_func = 'imagejpeg'; 
       $new_image_ext = 'jpg'; 
       break; 

     case 'image/png': 
       $image_create_func = 'imagecreatefrompng'; 
       $image_save_func = 'imagepng'; 
       $new_image_ext = 'png'; 
       break; 

     case 'image/gif': 
       $image_create_func = 'imagecreatefromgif'; 
       $image_save_func = 'imagegif'; 
       $new_image_ext = 'gif'; 
       break; 

     default: 
       throw new Exception('Unknown image type.'); 
} 

$img = $image_create_func($originalFile); 
list($width, $height) = getimagesize($originalFile); 

$newWidth = ($width/$height) * $newHeight; 
$tmp = imagecreatetruecolor($newWidth, $newHeight); 
imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 

if (file_exists($targetFile)) { 
     unlink($targetFile); 
} 
$image_save_func($tmp, "thumb/$targetFile.$new_image_ext"); 
} 

i verbindet beide Skript wie diese

<?php 
if (isset($_POST['upload'])) { 
$target = "./img/".basename($_FILES['image']['name']); 

$image = $_FILES['image']['name']; 

$sql = "INSERT INTO `image`(`image`) VALUES ('$image')"; 
mysqli_query($connection, $sql); 

if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) { 
$smsg = "Image Uploaded Successfuly"; 

resize(320, '$target', '$target');  //resize function 
}else { 
$fmsg = "An Error Occure During Upload"; 
} 

} 
?> 

und wenn ich versuche, sowohl Skript dann das Hochladen von Bildern zu verbinden, aber Thumbnail nicht Fehler erstellt = Nein solche Datei oder Verzeichnis.

Irgendeinem helfen mir, beidem Skript beizutreten und Thumbnail beim hochladen des Bildes zu erstellen.

Antwort

1

die einfachen Anführungszeichen in der Variablen die folgende Zeile tatsächlich als $target statt der beabsichtigten folder/filename.xxx nicht analysiert werden, werden die Werte interpretiert:

resize(320, '$target', '$target'); 

Entweder man sie entfernen:

resize(320, $target, $target); 

oder Verwenden Sie doppelte Anführungszeichen.

resize(320, "$target", "$target"); 

Rücksprache mit http://php.net/manual/en/language.types.string.php über Strings.

Verwenden Sie die Fehlerberichterstattung von PHP und stellen Sie sicher, dass die Pfade korrekt sind und dass die Ordner mit den entsprechenden Berechtigungen beschreibbar sind.

+0

kann die dv'er (gerade) ihre Ansichten über das teilen? das würde helfen. Sonst ist der DV nicht aufgerufen; Mit dieser Antwort ist nichts falsch. –