Autor |
Nachricht |
obike
Threadersteller
Dabei seit: 09.08.2009
Ort: Hamburg
Alter: 40
Geschlecht:
|
Verfasst Mo 17.08.2009 17:31
Titel Kein Bilder-Upload wegen Exif-Daten? (Gelöst) |
|
|
Moin Moin zusammen,
ich bin gerade dabei eine Bildergallerie zu erstellen und habe nun ein ganz seltsames Problem.
Und zwar werden nicht alle Bilder hochgeladen und ich finde nicht heraus woran es liegt.
Ich hab zwei verschiedene Bilder:
1. Bild1.jpeg = 1.91 MB
2. Bild2.jpeg = 631 KB.
Das grössere Bild lädt er hoch und trägt die relevanten Daten in die DB, das kleine nicht?!
Ich habe schon herausgefunden, kann aber auch eine Zufall sein, dass er Bilder wo man erkennen kann das es mit einem Handy erstellt wurde nicht hochlädt, die anderen jedoch schon.
Hier einmal die verantwortlichen Zeilen:
Code: |
<?php
$max_file_size = 4194304;
if(isset($_FILES['file'])) {
$filename = $_FILES['file']['name'];
$source = $_FILES['file']['tmp_name'];
$target = $image_directory . $filename;
$description = mysql_real_escape_string($_POST['description']);
$kategorie = $_POST['kategorie'];
$src = $picture_directory . $filename;
$tn_src = $thumbs_directory . $filename;
if($_FILES['file']['size'] >= $max_file_size)
$error['file_size'] = '<div class="message-error">Die Dateigrösse des Bildes ist zu gross. Max: 4 MB.</div>';
if(strlen($_POST['description']) < 4)
$error['description'] = '<div class="message-error">Bitte gebe eine Beschreibung für das Bild an.</div>';
if($filename == '' || !preg_match('/[.](jpg)|(gif)|(png)|(jpeg)$/', $filename))
$error['no_file'] = '<div class="message-error">Es sind nur Bilder erlaubt</div>';
if(!$error) {
move_uploaded_file($source, $target);
$q = "INSERT INTO
photo(description, src, tn_src, album_id)
VALUES('$description', '$src', '$tn_src', '$kategorie')";
$result = $mysqli->query($q) or die(mysqli_error($mysqli));
if($result) {
echo "<div class=\"message-confirmation\">Bild wurde erfolgreich hinzugefügt.</div>";
}
createThumbnail($filename);
createPicture($filename);
unlink($target);
}
}
?>
|
Kann mir jemand erklären woran das liegt? Mag er eventuell Bilder mit Exif-Daten nicht?
Viele Grüsse
Dennis
Zuletzt bearbeitet von obike am Di 18.08.2009 22:42, insgesamt 1-mal bearbeitet
|
|
|
|
|
leinich
Dabei seit: 23.09.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mo 17.08.2009 17:58
Titel
|
|
|
es wär auch ganz gut zu wissen welcher Fehler denn genau kommt????
|
|
|
|
|
Anzeige
|
|
|
obike
Threadersteller
Dabei seit: 09.08.2009
Ort: Hamburg
Alter: 40
Geschlecht:
|
Verfasst Mo 17.08.2009 19:02
Titel
|
|
|
Oh sorry das hab ich vergessen.
Es kommt kein Fehler.... Ich hab alles an was error_reporting betrifft. Mysql_error kommt auch nicht, nichts.
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 17.08.2009 19:26
Titel
|
|
|
Vielleicht postest du am besten mal die vollständigen Scripts samt HTML Formularen
|
|
|
|
|
obike
Threadersteller
Dabei seit: 09.08.2009
Ort: Hamburg
Alter: 40
Geschlecht:
|
Verfasst Mo 17.08.2009 19:52
Titel
|
|
|
Also das Script oben ist vollständig, ausser das die Funktionen für die Thumbnails ausgelagert sind,
aber soweit kommt er ja garnicht.
Hier der HTML Part:
Code: |
<div id="stylized" class="myform">
<form enctype="multipart/form-data" method="post" action="index.php">
<label for="file">File
<span class="small">Bitte wähle eine Datei aus.</span></label>
<input type="file" name="file" />
<label for="kategorie">Kategorie
<span class="small">Bitte wähle eine Kategorie aus.</span></label>
<?php selectCategorie(); ?>
<label for="description">Beschreibung
<span class="small">Beschreibung des Bildes</span></label>
<textarea rows="6" cols="50" id="description" name="description"></textarea></p>
<p><button type="submit" name="submit" />Upload starten</button></p>
</form>
</div>
|
und hier noch die Funktion für die Thumbnails:
Code: |
function createThumbnail($filename) {
require 'config.php';
if(preg_match('/[.]jpg$/', $filename)) {
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
} else if (preg_match('/[.]gif$/', $filename)) {
$im = imagecreatefromgif($path_to_image_directory . $filename);
} else if (preg_match('/[.]png$/', $filename)) {
$im = imagecreatefrompng($path_to_image_directory . $filename);
}
$ox = imagesx($im);
$oy = imagesy($im);
$nx = $final_width_of_image;
$ny = floor($oy * ($final_width_of_image / $ox));
$nm = imagecreatetruecolor($nx, $ny);
imagecopyresampled($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);
if(!file_exists($path_to_thumbs_directory)) {
if(!mkdir($path_to_thumbs_directory)) {
die("There was a problem.");
}
}
imagejpeg($nm, $path_to_thumbs_directory . $filename);
header("location: index.php");
}
|
Saluti[/code]
|
|
|
|
|
leinich
Dabei seit: 23.09.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Di 18.08.2009 20:33
Titel
|
|
|
nimm mal das raus:
Zitat: |
header("location: index.php");
|
und wenns das nicht ist, dann füg doch mal an ein paar kontrollpunkten ein echo ein, damit du weisst an welcher stelle das Skript hängen bleibt!
|
|
|
|
|
obike
Threadersteller
Dabei seit: 09.08.2009
Ort: Hamburg
Alter: 40
Geschlecht:
|
Verfasst Di 18.08.2009 21:15
Titel
|
|
|
Ich hab den Fehler gefunden!!
Die Handys haben den Bildern die Dateiendung *.JPG gegeben anstatt von *.jpg, nun wusste ich nicht,
das der reguläre Ausdruck case sensitiv ist .
Ich hab den Code um folgendes erweitert:
Code: |
//in der Index
if($filename == '' || !preg_match('/[.](jpg)|(gif)|(png)|(jpeg)|(JPEG)|(PNG)|(GIF)|(JPG)$/', $filename))
$error['no_file'] = '<div class="message-error">Es sind nur Bilder erlaubt</div>';
// in der Funktion
if(preg_match('/[.]jpg$/', $filename)) {
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
} else if (preg_match('/[.]gif$/', $filename)) {
$im = imagecreatefromgif($path_to_image_directory . $filename);
} else if (preg_match('/[.]jpeg$/', $filename)) {
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
} else if (preg_match('/[.]png$/', $filename)) {
$im = imagecreatefrompng($path_to_image_directory . $filename);
} else if (preg_match('/[.]GIF$/', $filename)) {
$im = imagecreatefromgif($path_to_image_directory . $filename);
} else if (preg_match('/[.]JPEG$/', $filename)) {
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
} else if (preg_match('/[.]PNG$/', $filename)) {
$im = imagecreatefrompng($path_to_image_directory . $filename);
} else if (preg_match('/[.]JPG$/', $filename)) {
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
}
|
Und TADAAA es hat geklappt.
Was mich jetzt nur wurmt ist, warum er mir keine Fehlermeldung angezeigt hat
Hat noch jemand eine Idee?
MfG
Dennis
|
|
|
|
|
choise
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Di 18.08.2009 21:33
Titel
|
|
|
machs halb so lang mit strtolower
|
|
|
|
|
|
|
|
Ähnliche Themen |
EXIF-Daten aus Datenbank in ein JPG
EXIF-Daten automatisiert löschen
CSV upload zeigt mit im Ergebniss nur 1 Komma an statt Daten
Bilder Upload
Bilder Upload per PHP Hilfe!!
Bilder Über SQl Upload
|
|