probleme mit move_upload_file

macropode

Erfahrenes Mitglied
hallo ihr lieben Helferlein.

Ich habe ein kleineres Problem mit move_upload_file:

Bei mir über DSL funktioniert das script tatellos.

Wenn jedoch ein Freund von mir ein Bild hochladen will (Er hat nur ISDN) kommt als Meldung:

Warning: move_upload_file (../bilder/)
[function.move-uploaded-file]: failed to open stream: Ist ein Verzeichnis in /www/htdocs/undsoweiter/upload.php on line 45


Warning: move_upload_file() [function.move-uploaded-file]: Unable to move '/tmp/undsoweiter' to '../bilder/'
in /www/htdocs/undsoweiter/upload.php on line 45

Ich poste am besten gleich noch das script.

Code:
 <?php
session_start();
include("zugang.php");

if (isset($_POST['action']))
    {
    $upload_dir = "../bilder/";
    
    $bildid = 0;
    
    $sqla = "INSERT INTO bilder (original, alt)VALUES ('".$_FILES['toProcess']['name']."', '".$_POST['alt']."')";
        mysql_query($sqla) or die(mysql_error());
        
    $sql = "Select id from bilder";         // id des bildes werden abgefragt!
        $ergebnis = mysql_query($sql);
        while ($zeile = mysql_fetch_assoc($ergebnis))
        {
        $bildid = $zeile["id"];
        }
    
    if ($_FILES['toProcess']['type'] == 'image/gif')
        {
        $bildneu = $bildid.'.gif';
        }
    else if ($_FILES['toProcess']['type'] == 'image/jpg')
        {
        $bildneu = $bildid.'.jpg';
        }
    else if ($_FILES['toProcess']['type'] == 'image/jpeg')
        {
        $bildneu = $bildid.'.jpg';
        }
    
    
    $update = "UPDATE `bilder` SET name = '".$bildneu."' where id = ".$bildid."";
            mysql_query($update) or die(mysql_error());
        
   
   $_FILES['toProcess']['name'] = $bildneu;
   $_FILES['toProcess']['type'];
   $_FILES['toProcess']['size'];
   $_FILES['toProcess']['tmp_name'];
   
  move_uploaded_file($_FILES['toProcess']['tmp_name'],   $upload_dir.$_FILES['toProcess']['name']);        ---> zeile 45
   
       
                

    echo '<font color="#ff0000"><br><br></br></br>Bild geladen</font>';
    }

?> 
    <form method="post" enctype="multipart/form-data" action="index.php?id=2"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="4000000"> 
    <br><br> 

    <input name="toProcess" type="file" size=40><br><br> 
    
    Beschreibung: &nbsp;<input type="text" name="alt" size="40" maxlength="150"></input><br><br>
    <input type="submit" name="action" value="Speichern"> 
    </form>

Kann mir jemand sagen woran es liegen könnte das ich per DSL das script problemlos benutzen kann er aber nicht?

Ich danke euch für eure mühe!
 
Ich bin auf MySQL eher nioch neu,
deswegen weiß ich nicht ob man das so schreiben darf,
aber folgendes ist mir aufgefallen:

mysql_query($sqla) or die(mysql_error());

Du hast davor keine Variable, ist das möglich?

Auf die Frage mit DSL und ISDN weiß ich keine Antwort, kann mir aber auch nicht vorstellen,d as es daran liegt.
 
@Acriss: ein Insert liefert eh nichts sinnvolles zurück, wenn er ohnehin ein die() macht falls es fehlschlägt.

PHP:
    $sqla = "INSERT INTO bilder (original, alt)VALUES ('".$_FILES['toProcess']['name']."', '".$_POST['alt']."')";
        mysql_query($sqla) or die(mysql_error());
        
    $sql = "Select id from bilder";         // id des bildes werden abgefragt!
        $ergebnis = mysql_query($sql);
        while ($zeile = mysql_fetch_assoc($ergebnis))
        {
        $bildid = $zeile["id"];
        }

Verwende hier lieber mysql_insert_id() um die letzte eingefügte ID zu bekommen.

Ich würde beim Upload und kopieren eher absolute pfade auf deinem Server verwenden, den aktuellen zum php file bekommst du ja per getcwd().

Aber einen Sinnvollen Grund warum es bei ISDN nicht gehen sollte gibt es nicht, auser der upload timeoutet oder so weil er etwas zu großes hochladen möchte.
 
erstmal danke für eure ideen.

Mit der DB ist jedoch alles ok. der Bildname und der Text zum Bild wird eingetragen.

Jedoch erscheind das bild nicht in dem ordner und die fehlermeldung erscheint. Absolute pfade kann ich beim upload nicht angeben, da die Bildnamen jedesmal verändert werden.

Achja und die bilder sind nicht größer als 100 kb also auch nicht wirklich groß.
 
Kannst du nicht?

PHP:
$upload_dir = getcwd()."../bilder/";

Die andere Frage, steht dannach wirklich der richtige neue [id].jpg in der Datenbank?

wenn die fehlermeldung genau so ist wie du sie gepostet hattest, ist kein Dateiname dahinter.
 
Aber was steht in der Datenbank genau als Dateiname? Ist das Feld leer oder trägt er da richtige sachen ein? Möglich das das IF / ELSE Fehlschlägt, so hat er dann keinen Dateinamen wo er es hinkopieren soll und es kommt zu dieser Fehlermeldung.
 
Zurück