Problem mit Upload-Skript

Fabian Frank

Erfahrenes Mitglied
Hallo Liebe Leutz,

hab Probleme mit einem Upload Skript.

Und zwar erstens:

Ich hab in einer Datei zwei Skripte, eine zum Uploaden von Bilder
PHP:
if($type != "image/gif" & $type != "image/jpg") {
und eine für MP3's. Nur wie schreib ich in die Zeile dort, die abfrägt ob das Bild die Datei gif oder jpg hat, dass es ein Audio (MP3) File ist?

Etwa so?:

PHP:
if($type != "audio/mp3") {

So und nun zu meinem 2. Problem.

Und zwar soll das Skript überprüfen, ob die eine Dateri mit dem Datei namen bereits auf dem Webspace liegt, da die Datei sonst überschrieben wird.

Wie kann ich soetwas realisieren?

Vielen Dan für eure Antworten!

Grüße,

Fabi

Das Gesamte Skript:
PHP:
<?
$tempname = $_FILES['file']['tmp_name'];  
$name = $_FILES['file']['name']; 
$type = $_FILES['file']['type'];  
$size = $_FILES['file']['size'];  

if($type != "image/gif" & $type != "image/jpg") {  
    $err[] = "<font size='1' color='#ffffff'>Es dürfen nur Bilder im Format .gif  hochgeladen werden!</font>";  
}  
if($size > "150000") {  
    $err[] = "<font size='1' color='#ffffff'>Die hochzuladene Datei ist zu groß! Maximal-Größe: 150 KB</font>";  
}  

if(empty($err)) {  
    copy("$tempname", "pics/$name");  
    echo "<font size='1' color='#ffffff'>Die Datei $name wurde erfolgreich hochgeladen!<br><br>Die Datei ist über die URL<br><br><a href='http://web31.bces-2090.de/drummeract/board/userpics/pics/$name' target='_blank' class='bu'>http://web31.bces-2090.de/drummeract/board/userpics/pics/$name</a><br><br>aufrufbar.</font>";  
}  
else {  
    foreach($err as $error)  
    echo "$error<br>";  
}  
?>
<br><br>

<img src="top_2.gif"><form enctype="multipart/form-data" action="upload.php" method="post"> 
<input type="file" name="file_2"><br> <br>
<input type="image" src="load.gif"> 
</form> 
<?
$tempname_2 = $_FILES['file_2']['tmp_name'];  
$name_2 = $_FILES['file_2']['name']; 
$type_2 = $_FILES['file_2']['type'];  
$size_2 = $_FILES['file_2']['size'];  

if($type != "image/gif" & $type != "image/jpg") {  
    $err_2[] = "<font size='1' color='#ffffff'>Es dürfen nur MP3's mit einer Maximal-Größe von 1 MB hochgeladen werden!</font>";  
}  
if($size > "100000") {  
    $err_2[] = "<font size='1' color='#ffffff'>Die hochzuladene Datei ist zu groß! Maximal-Größe: 150 KB</font>";  
}  

if(empty($err_2)) {  
    copy("$tempname_2", "mp3/$name_2");  
    echo "<font size='1' color='#ffffff'>Die Datei $name wurde erfolgreich hochgeladen!<br><br>Die Datei ist über die URL<br><br><a href='http://web31.bces-2090.de/drummeract/board/userpics/mp3/$name' target='_blank' class='bu'>http://web31.bces-2090.de/drummeract/board/userpics/mp3/$name</a><br><br>aufrufbar.</font>";  
}  
else {  
    foreach($err_2 as $error)  
    echo "$error_2<br>";  
}  
?>
 
Also zu 1:
Ich würde das Script neu ordnen, ganz oben die beiden Scripts und danach das Formular und dann vielleicht so aufbauen:
PHP:
<?php

if($type == "audio/mp3") {
# MP3 Upload
} elseif($type == "image/jpeg" OR $type == "image/gif") {
# Bild Upload
else {
# Fehlermeldung dass der Dateityp nicht unterstützt wird
}
?>

Und für deine zweite Frage hilft dir diese Funktion:
file_exists()
 
Der korrekte Mime-Typ für MP3-kodierte Audiodateien heißt „audio/mpeg“. Allerdings solltest du den Typ der hochgeladenen Datei lieber selbst serverseitig prüfen, als dich auf den übermittelten Typ zu verlassen. Dazu kannst du etwa das „getid3()“-Skript verwenden.
Die Existenz einer Datei kann übrigens mit der file_exists()-Funktion geprüft werden.
 
Zu 2.

Ich würde dir empfehlen nicht den Originalnamen zu übernehmen.
Du kannst ja aus song.mp3 song-143934584.mp3 machen.
Die Zahl kann eine fortlaufende ID oder ein timestamp oder oder....

Zum Beispiel:
PHP:
$name = $original_name . time() . $extension;

Tobee
 
Zurück