Bildergröße vor Upload überprüfen

DucTX

Grünschnabel
Ich hab ein Problem mit dem Bilder-Upload von dem CMS, das ich benutze. Und zwar möchte ich, dass bei dem Bild, dass hochgeladen werden soll zuerst die Breite überprüft wird und nur wenn diese kleiner oder gleich 500 Pixel ist soll das Bild hochgeladen werden. Ansonsten soll einfach einen Fehlermeldung erscheinen und vielleicht ein Zurück-Button.

Das hier ist mein Code:
<?php
if(!isanyadmin($userID)) die('No access.');

if($_GET['cwID']) {
$filepath = "./images/clanwar-screens/";
$webpath = "images/clanwar-screens/";
$table = "clanwars";
$tableid = "cwID";
$id = $_GET['cwID'];
}
elseif($_GET['newsID']) {
$filepath = "./images/news-pics/";
$webpath = "images/news-pics/";
$table = "news";
$tableid = "newsID";
$id = $_GET['newsID'];
}
elseif($_GET['articlesID']) {
$filepath = "./images/articles-pics/";
$webpath = "images/articles-pics/";
$table = "articles";
$tableid = "articlesID";
$id = $_GET['articlesID'];
}

if($_POST['submit']) {
$screen = $_FILES[screen];
if(!empty($screen[name])) {
move_uploaded_file($screen[tmp_name], $filepath.$screen[name]);
@chmod($filepath.$screen[name], 0755);
$file_ext=strtolower(substr($screen[name], strrpos($screen[name], ".")));
$file=$id.'_'.time().$file_ext;
rename($filepath.$screen[name], $filepath.$file);
$ergebnis=safe_query("SELECT screens FROM ".PREFIX."$table WHERE $tableid='$id'");
$ds=mysql_fetch_array($ergebnis);
$screens=explode("|", $ds[screens]);
$screens[]=$file;
$screens_string=implode("|", $screens);

safe_query("UPDATE ".PREFIX."$table SET screens='$screens_string' WHERE $tableid='$id'");
}
header("Location: upload.php?$tableid=$id");
}
elseif($_GET['action']=="delete") {
$file = $_GET['file'];
if(file_exists($filepath.$file)) @unlink($filepath.$file);

$ergebnis=safe_query("SELECT screens FROM ".PREFIX."$table WHERE $tableid='$id'");
$ds=mysql_fetch_array($ergebnis);
$screens=explode("|", $ds[screens]);
foreach($screens as $pic) {
if($pic != $file) $newscreens[]=$pic;
}
if(is_array($newscreens)) $newscreens_string=implode("|", $newscreens);
safe_query("UPDATE ".PREFIX."$table SET screens='$newscreens_string' WHERE $tableid='$id'");

header("Location: upload.php?$tableid=$id");

}
else {
echo'<html><head><script src="js/bbcode.js" language="jscript" type="text/javascript"></script>
<link href="_stylesheet.css" rel="stylesheet" type="text/css"></head>';

echo'<body><center><h2>FILE-UPLOAD:</h2><form method="post" action="upload.php?'.$tableid.'='.$id.'" enctype="multipart/form-data">
<table width="100%" cellpadding="4" cellspacing="1" bgcolor="'.BORDER.'">
<tr bgcolor="'.BG_1.'"><td align="center">
<input type="file" name="screen"> <input type="submit" name="submit" value="upload">
<hr noshade size="1" color="'.BORDER.'"><h2>EXISTING FILES:</h2>
<table cellpadding="2">';

$ergebnis=safe_query("SELECT screens FROM ".PREFIX."$table WHERE $tableid='$id'");

$ds=mysql_fetch_array($ergebnis);
if(!empty($ds[screens])) $screens=explode("|", $ds[screens]);
if(is_array($screens)) {
foreach($screens as $screen) {
if($screen!="") {
echo'<tr><td><a href="'.$webpath.$screen.'" target="_blank">'.$screen.'</a></td>
<td><input type="text" name="pic" size="70" value="&lt;img src='.$webpath.$screen.' align=left&gt;" class="form_off" onFocus="this.className=\'form_on\'" onBlur="this.className=\'form_off\'"></td>
<td><input type="button" class="button" onClick="AddCodeFromWindow(\'&lt;img src='.$webpath.$screen.' align=left&gt; \')" value="add to message"></td>
<td><input type="button" class="button" onClick="MM_confirm(\'delete image?\',\'upload.php?action=delete&'.$tableid.'='.$id.'&file='.$screen.'\')" value="delete"></td>
</tr>';
}
}
}

echo'</table></td></tr></table></center></body></html>';
}
?>

Sorry für den ewig langen Code (man muss dazu sagen: Ich hab den nicht selbst geschrieben), aber ich krieg das einfach nicht hin. Hab schon was mit getimagesize() probiert, aber das funktioniert irgendwie nicht, weil die Datei ja noch nicht auf dem Webserver ist Sonder auf dem PC des Users ist. Gibts da eine Möglichkeit oder muss ich die Datei so oder so hochladen?
 
Ich hab nun den ewig langen Code da nicht durchgeackert da er 1. nicht formatiert ist und 2. man sich erstmal da reinarbeiten müsste.

Ehm bei einen Fileupload kommt ein Array bei dem Script an ,

$_FILE['UploadFeldName']['file_name'] => Name der Datei
... ['file_size'] => Dateigrösse

etc etc

Ich würde versuchen gleich

getimagesize($_FILE['UploadFeldName']['file_name'])

zu nehmen oder wenn das nicht klappt dann

getimagesize($_FILE['UploadFeldName']['tmp_name'])

damit solltest das hochgeladene Bild in grösse etc verarbeiten können.
 
Sorry, ich muss dir leider wiedersprechen:

Das $_FILES array ist anders aufgebaut:

Code:
Array ( 
    [name] => 
    [type] => 
    [tmp_name] => 
    [error] =>
    [size] => 
)

Alles klar?
 
mhmm bei mir sieht das so aus , alles was sich ändert ist der nicht file_name sondern nur name

Code:
$_FILES["fileupload"]

Array
(
    [name] => banner_teil.jpg
    [type] => image/jpeg
    [tmp_name] => C:\www\uploads\php10B3.tmp
    [error] => 0
    [size] => 24636
}

Mir sieht das nach einen Mehrdimensionalen Array aus oder was wolltest Du mir mitteilen ? Wenn mal was falsch geschrieben ist , das kommt vor darum schaut man ja auch mittels phpinfo() einfach mal nach was dort ankommt.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück