kostenloser Webspace werbefrei: lima-city


fakepath bei Bildupload

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    alfr3d

    alfr3d hat kostenlosen Webspace.

    Hallo,

    ich habe folgendes:
    Ein Formular mit mehrern Eingabefelder, unter anderem auch eines um Dateien hochzuladen (input type="file"). Mit diesem Feld möchte ich ein Bild hochladen. Allerdings soll das ganze über "AJAX" funktionieren so, dass sobald ich eine Datei auswähl diese hochgeladen und als Vorschau angezeigt wird, ohne einen Speicher-Button etc.

    Das Skript funktioniert soweit, dass beim auswählen einer Datei (onChange) der Vorschaudiv verändert wird. Das einzigste Problem ist, dass der Pfadname der Datei nicht richtig übergeben wird.

    Eigentlich müsste es z.B. so heißen:
    C:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Bilder\Beispielbilder\wasserlilie.jpg

    Stattdessen erhalte ich beim übergeben an das Upload-Skript immer folgendes Ergebnis:
    C:\\fakepath\\wasserlilie.jpg


    Dadurch kann das Bild natürlich nicht gefunden werden und auch nicht hochgeladen werden. Ich hoffe jemand kennt dieses Problem oder weiß Rat.

    Danke schon einmal :)

    Beitrag zuletzt geändert: 8.12.2010 12:32:10 von alfr3d
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Schau dir mal Diese Site an:

    Vielleicht hilft dir der Code. Kenne mich selbst leider nicht mit AJAX aus,
    aber was ich gelesen habe bist du nicht der einzige mit diesem Problem.

    [Edit] Richtigen BB-Code eingefügt



    Beitrag zuletzt geändert: 9.12.2010 4:33:07 von fedprod
  4. Ich habe es geschafft, einen Skript zu erstellen,
    der deinen Anforderungen entspricht.

    Leider kann man keine Tutorials erstellen, sonst hätte
    ich den Skript warscheinlich hineingestellt.:mad:

    Zuerste musst du eine Datei namens "upload.php" erstellen:(Die Name kannst du auch ändern, wenn du den Quelltext verändest)
    <html>
    <head>
    <title>Upload-Form</title>
    <script language="JavaScript">
    <!--
    function senden()
    {
    	document.upl.submit();
    }
    //-->
    </script>
    </head>
    <body>
    <?php
    
    $max_groesse = 8000000; // Max. 8MB Upload
    $upl_ordner = "data"; // OHNE Slash am Ende, Uploadorner
    
    $pos = 1;
    $lastpos = 0;
    while($pos !== false)
    {
    	$lastpos = $pos;
    	$pos = strpos($_SERVER['SCRIPT_FILENAME'], "/", $pos + 1);
    }
    
    $upl_ordner = substr($_SERVER['SCRIPT_FILENAME'], 0, $lastpos + 1) . $upl_ordner . "/";
    
    if(isset($_FILES['datei']) && isset($_FILES['datei']['tmp_name'])) // Datei abgesendet?
    {
    	if($_FILES['datei']['size'] < $max_groesse)
    	{
    		if(!move_uploaded_file($_FILES['datei']['tmp_name'],$upl_ordner . $_FILES['datei']['name']))
    		{
    			echo "Es trat ein Fehler beim Hochladen auf!";
    		} else
    		{
    			echo "Datei wurde erfolgreich hochgeladen!";
    			$file = fopen("lastupl.txt", "w");
    			fputs($file, $_FILES['datei']['name']);
    			fclose($file);
    		}
    	} else
    	{
    		echo "Die Datei ist zu Groß!"; // Wenn die Datei zu groß ist
    	}
    }
    
    ?>
    <p />
    
    <form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" name="upl">
    Datei: <input name="datei" type="file" onChange="senden()">
    </form>
    </body>
    </html>


    Diese Datei ist für den Upload und die Auswahl eines Bildes zuständig.

    Die nächste Datei ist sehr klein und heißt "bild.php":
    <?php
    $upl_ordner = "data"; // Der Uploadordner
    
    $file = fopen("lastupl.txt", "r"); // Die zuletzt geuploadete Date öffnen
    $name = fgets($file, 256); // Dateiname des Bildes
    fclose($file); // DAte wieder schließen
    
    $bild = fopen($upl_ordner . "/" . $name, "r"); // Bild zum Lesen öffnen
    echo fread($bild, filesize($upl_ordner . "/" . $name)); // Bildinhalt ausgeben
    fclose($bild); // Bild schließen
    ?>

    Diese Datei ist für das Anzeigen des zuletzt Hochgeladenen Bild zuständig.

    Die letzte Datei vereint beide vorherigen und ist die Hauptdatei namens "form.php":
    <html>
    <head>
    <title>Bild-Uploader</title>
    <script language="JavaScript">
    <!--
    var fertig = false;
    
    function loaded()
    {
    	if(fertig)
    	{
    		document.getElementById('bild').src = "bild.php?" + Math.random()*10000;
    	} else
    	{
    		fertig = true;
    	}
    }
    //-->
    </script>
    </head>
    <body>
    <iframe src="upload.php" onload="loaded()" border=0></iframe>
    <img src="bild.php" id="bild"></img>
    </body>
    </html>


    Dann musst du noch einen Ordner anlegen(hier nennt er sich data),
    worin die geuploadeten Bilder gespeichert werden.

    Ich hoffe dir reicht die Erklärung.
  5. Das ist eine Sicherheitsbeschränkung des IE:

    "If you go to Internet Explorer; Tools; Internet Option; Security; Custom; find the "Include local directory path when uploading files to a server" (it is quite a ways down) and click on "Enable" You may have to restart your computer, but this works & eliminates that pesky little "fakepath" that inhibits the upload."
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!