Hallo,
Ich bin gerade dabei einen Image-uploader zu bauen,
habe nun schon zwei funktionierende geschafft mit Hilfe von Tutorials und ein wenig herumprobieren.
Ich hätte es gerne so das mir zwei Bilder erstellt werden eines in Original Größe und ein kleines für Previews.
Das Problem ist nur,
bei dem ersten uploader kann ich mehrere Bilder hochladen aber es erstellt mir nur die Bilder in Original Größe.
bei dem zweiten kann ich nur ein Bild hochladen aber es erstellt mir 2 Bilder mit dem selben Namen. Eines in Original Größe in den Ordner Images und ein kleines in den Ordner thumbs.
Nun habe ich versucht es zu kombinieren, sieht zurzeit so aus:
fshow.php:
fupload.php:
Soweit funktioniert es auch wie es soll mit einer Ausnahme, wenn ich ein Bild auswähle lädt es hoch wie es soll und erstellt mir ein großes bild im Image Ordner und ein kleines im thumbs Ordner,
wenn ich aber mehrere Bilder auswähle dann lädt es zwar alle großen Bilder in den Image Ordner aber nur von einen Bild wird ein kleines in den thumbs Ordner erstellt.
Bin noch recht neu was php angeht. Wäre schön wenn mir jemand ein paar Tipps geben könnte wo da der Fehler begraben liegt.
Lg Shadian
Ich bin gerade dabei einen Image-uploader zu bauen,
habe nun schon zwei funktionierende geschafft mit Hilfe von Tutorials und ein wenig herumprobieren.
Ich hätte es gerne so das mir zwei Bilder erstellt werden eines in Original Größe und ein kleines für Previews.
Das Problem ist nur,
bei dem ersten uploader kann ich mehrere Bilder hochladen aber es erstellt mir nur die Bilder in Original Größe.
bei dem zweiten kann ich nur ein Bild hochladen aber es erstellt mir 2 Bilder mit dem selben Namen. Eines in Original Größe in den Ordner Images und ein kleines in den Ordner thumbs.
Nun habe ich versucht es zu kombinieren, sieht zurzeit so aus:
fshow.php:
PHP-Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>FileUpload</title>
<link rel="stylesheet" href="ostyle.css" type="text/css" />
</head>
<body>
<form action="fupload.php" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple />
<input type="submit" value="Upload" />
</form>
</body>
</html>
PHP-Code:
<?php
if(!empty($_FILES['files']['name'][0])) {
$files = $_FILES['files'];
$uploaded = array();
$failed = array();
$allowed = array('jpg', 'png');
foreach($files['name'] as $position => $file_name) {
$file_tmp = $files['tmp_name'][$position];
$file_size = $files['size'][$position];
$file_error = $files['error'][$position];
$file_ext = explode('.', $file_name);
$file_ext = strtolower(end($file_ext));
if(in_array($file_ext, $allowed)) {
if($file_error === 0) {
if($file_size <= 2097152) {
$file_name_new = uniqid('', true) . '.' . $file_ext;
$file_destination = '../gallery/images/' . $file_name_new;
if(move_uploaded_file($file_tmp, $file_destination)) {
$uploaded[$position] = $file_destination;
$destpath = "../gallery/images/";
while(list($key,$value) = each($_FILES["files"]["name"])) {
if(!empty($value))
{
if (($_FILES["files"]["type"][$key] == "image/gif")
|| ($_FILES["files"]["type"][$key] == "image/jpeg")
|| ($_FILES["files"]["type"][$key] == "image/pjpeg")
|| ($_FILES["files"]["type"][$key] == "image/png")
&& ($_FILES["files"]["size"][$key] < 2000000))
{
//thumbnail creation start//
$tsrc="../gallery/images/thumbs/".$file_name_new; // Path where thumb nail image will be stored
$n_width=327; // Fix the width of the thumb nail images
$n_height=245; // Fix the height of the thumb nail imaage
// Starting of GIF thumb nail creation //
$add=$destpath . $file_name_new;
if($_FILES["files"]["type"][$key]=="image/gif"){
$im=ImageCreateFromGIF($add);
$width=ImageSx($im); // Original picture width is stored
$height=ImageSy($im); // Original picture height is stored
$newimage=imagecreatetruecolor($n_width,$n_height);
imageCopyResized($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height);
if (function_exists("imagegif")) {
Header("Content-type: image/gif");
ImageGIF($newimage,$tsrc);
}
if (function_exists("imagejpeg")) {
Header("Content-type: image/jpeg");
ImageJPEG($newimage,$tsrc);
}
}
////////// end of gif file thumb nail creation//////////
$n_width=327; // Fix the width of the thumb nail images
$n_height=245; // Fix the height of the thumb nail imaage
////////////// starting of JPG thumb nail creation//////////
if($_FILES["files"]["type"][$key]=="image/jpeg"){
echo $_FILES["files"]["name"][$key]."<br>";
$im=ImageCreateFromJPEG($add);
$width=ImageSx($im); // Original picture width is stored
$height=ImageSy($im); // Original picture height is stored
$newimage=imagecreatetruecolor($n_width,$n_height);
imageCopyResized($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height);
ImageJpeg($newimage,$tsrc);
chmod("$tsrc",0777);
}
////////// end of jpg file thumb nail creation//////////
//////////////// Start of png thumb nail creation //////////
if($_FILES["files"]["type"][$key]=="image/png"){
$im=ImageCreateFromPNG($add);
$width=ImageSx($im); // Original picture width is stored
$height=ImageSy($im); // Original picture height is stored
$newimage=imagecreatetruecolor($n_width,$n_height);
imageCopyResized($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height);
if (function_exists("imagepng")) {
ImagePNG($newimage,$tsrc);
}
if (function_exists("imagejpeg")) {
ImageJPEG($newimage,$tsrc);
}
}
// thumbnail creation end---
}
else{echo "error in upload";}
}
}
echo "thumbnails stored";
} else {
$failed[$position] = "[{$file_name}] failed to upload.";
}
} else {
$failed[$position] = "[{$file_name}] is too large.";
}
} else {
$failed[$position] = "[{$file_name}] errored with code {$file_error}.";
}
} else {
$failed[$position] = "[{$file_name}] file extension '{$file_ext}' is not allowed.";
}
}
if(!empty($uploaded)) {
print_r($uploaded);
}
if(!empty($failed)) {
print_r($failed);
}
}
wenn ich aber mehrere Bilder auswähle dann lädt es zwar alle großen Bilder in den Image Ordner aber nur von einen Bild wird ein kleines in den thumbs Ordner erstellt.
Bin noch recht neu was php angeht. Wäre schön wenn mir jemand ein paar Tipps geben könnte wo da der Fehler begraben liegt.
Lg Shadian
Kommentar