Forum
Tipps
News
Menu-Icon

HTML File Upload

Habe unter Xampp nach folgender Vorlage:

http://selfphp5.haas.homelinux.net/praxisbuch/ps-s225-g38.html

einen kleinen File-Upload einrichten wollen.

Erhalte allerdings die Fehlermeldung "Fehler: Während der Dateiübertragung aufgetreten." - sprich der Befehl move_uploaded_file ist fehlgeschlagen, soweit ich das verstehe?

Hoffe mir kann jemand damit weiterhelfen, mein Wissen ist nicht mehr tiefschürfend genug ^^
 


Antworten zu HTML File Upload:

Hallo,
so ohne Code ist Fehlersuche natürlich schwierig.
Aber eigentlich ist es ganz einfach:

if(is_uploaded_file($_FILES['datei']['tmp_name']))
{
   move_uploaded_file($_FILES['datei']['tmp_name'], $upload_dir.$_FILES['datei']['name']);



In $upload_dir ist das verzeichnis, wo die Datei liegen soll. Dabei hat sie dann auf dem Server den gleichen Namen wie auf dem Client.
Die Rechte im Ordner müssen auf 0777 gesetzt sein, aber das wird wohl der Fall sein.

Vllt hilfts Dir weiter.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wo muss ich dann genau den Speicherort in dem "move_uploaded_file" einsetzen?  :-X:-[ 

« Letzte Änderung: 24.02.10, 23:10:35 von sebnator »

Der Punkt ist in diesem Fall ein Verkettungsoperator.
Die Syntax sieht so aus:
bool move_uploaded_file ( string $filename, string $destination )

Vielleicht ist dieses Beispiel einfacher?
 Touch me

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Joah, zumindest das sollte nun stimmen. Erhalte allerdings nun einen lustigen "Error 500" ... *grml*

Zitat
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Skript ist aufgetreten.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

*hilfe* ... Bin damit eindeutig überfordert :-D

Die Fehlermeldung ist leider nur die Standardmeldung vom Apache.
Hat Dein Skript dort wo es die hochgeladene Datei hinspeichern soll Schreibrechte?
 

Oft wird dieser Fehler auch erzeugt bei einem Syntax-Fehler im Script, durch den der Server keinen Header erhält. Als auch noch mal Syntax checken. ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ok, da ich damit nicht weitergekommen bin, im Netz ein anderes Skript gefunden, ich zeig's einfach mal:

Zitat
<?php
function make_filename($filename, $pfad)
{
   //nicht die non-plus ultra funktion.. funktioniert nur mit 3 zeichen
   $end = substr($filename, -3);
   $start = substr($filename, 0, -4);
   $i=1;
   while(is_file($pfad.'/'.$start.$i.'.'.$end)) {
      $i++;
   }
   return $start.$i.'.'.$end;
}
 
 
   #####KONFIGURATION #############################################
 
 
   // Absoluter Pfad zum Ordner in den die Datei hochgeladen werden soll.
   $pfad = "/up/files";
 
 
   // Soll eine maximale Größe der Datei festgelegt werden ?
   $sizeabfrage = "yes";
 
   // Maximale Größe der Datei (Falls $sizeabfrage = "yes" ist)
   $filesize = "10240000000";
 
   // Soll die maximale Größe auch angezeigt werden ?
   $sizeanzeige = "yes";
 
   // Was für Dateitypen sollen erlaubt sein ?
   $extend = "jpg|gif|png|bmp|mp3";
 
   // Sollen die erlaubten Dateitypen angezeigt werden ?
   $extendanzeige = "yes";
 
   // Layout
   $body = "<body bgcolor=#999999 text=#000000 link=#FF0000 alink=#FF0000 vlink=#FF0000>";
   $font = "<font face=verdana size=2>";
 
   ##### Style KONFIGURATION #######################################
?>
 
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>UPLOAD</title>
</head>
<?php
   echo "$body";
   echo "$font";
?>
 
<div align="center">
 
<?
?>
 
<table align="center">
 
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<BR>
<b>Bitte Datei auswählen:</b>
<BR>
<?
   if ($sizeanzeige == "yes") {
      echo ("Maximale Größe: 1024 kByte");
   }
?>
<BR>
<?
   if ($extendanzeige == "yes") {
      echo ("Erlaubte Dateitypen: ".$extend);
   }
?>
<BR><BR>
<input type="file" size="30" name="file" />
<BR>
<input type="Submit" name="senden" value="Hochladen">
 
</form>
 
</table>
 
<?
 
##### Ab hier nichts mehr ändern !! ################################
 
   $fehler = FALSE;
 
   if (isset($_POST['senden']) && isset($_FILES)) {
      extract($_POST);
      extract($_FILES);
 
      if ($file['name'] == "") {
         echo "<BR><font color=#FF0000><b>Es wurde keine Datei ausgewählt!<BR></b></font>";
         $fehler = TRUE;
      }
 
      if (!$fehler)
      if (file_exists("$pfad/".$file['name'])) {
   $file['name'] = make_filename($file['name'],$pfad);
      }
 
      if (!$fehler)
      if ($sizeabfrage == "yes") {
         if ($file['size'] > $filesize) {
            echo "<BR><font color=#FF0000><b>Die Datei ist zu groß!<BR></b></font>";
            $fehler = TRUE;
         }
      }
 
      if (!$fehler)
      if (!eregi("($extend)$", $file['name'])) {
         echo "<BR><font color=#FF0000><b>Dieser Dateityp ist nicht erlaubt!<BR></b></font>";
         $fehler = TRUE;
      }
 
      if (!$fehler) {
        if (@copy($file['tmp_name'], $pfad."/".$file['name'])) {
           echo "<BR><font color=#00FF00><b><a href='".$file['name']."'>Datei hochgeladen</a></b></font><BR>";
           $fehler = FALSE;
        }
        else {
           echo "<BR><font color=#FF0000><b>Datei nicht hochgeladen<BR></b></font>";
           $fehler = TRUE;
        }
 
      }
   }
 
   if ($fehler || !(isset($_POST['senden']))) {
 
}
 echo "<BR><hr width=100>";
 echo "<font size=1></font>";
?>
 
</font>
</div>
</body>
</html>

Es kommt jeweils der Fehler "Datei nicht hochgeladen".

// Absoluter Pfad zum Ordner in den die Datei hochgeladen werden soll.
$pfad = "/up/files";
habe ich bereits für meine Bedürfnisse angepasst, allerdings wohl offensichtlich i-was anderes dafür vergessen.

 :-\ :'( 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Servus,

schreib doch mal, wie dein angepasster Upload-Pfad aussieht.
Sollte etwa so hier: "c:/dein_xamp_pfad/upload" Vielleicht solltest du auch jegliche Sonderzeichen im Pfad vermeiden (also auch Leerzeichen). Teste es einfach mal indem du alles nach c:/temp lädst - auch wenn das erstmal keinen großen Sinn ergibt.

Gruß,
Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Super Mario *G*, danke!

Dächte ich hatte es mit dem vollständigen Pfad schon probiert, aber offensichtlich vertippt oder gar nicht probiert - es funktioniert soweit :)

Kann allerdings das Verzeichnis nicht per .htaccess schützen? Erhalte wieder nur diese Fehlermeldung:

Zitat
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Skript ist aufgetreten.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Die .htaccess sieht so aus:

Zitat
AuthType Basic
AuthName "Password Required"
AuthUserFile /upload/.htpasswd
Require User Authorization

In einem anderen Verzeichnis (mit angepasstem AuthUserFile) funktioniert das einwandfrei :-X

AuthName ist der Bereich(Directory) für den sich der User anmelden soll.
Dein Directory heißt doch bestimmt nicht "Password Required"?

AuthUserFile ein Verweis auf die Passwortdatei.(am besten mit absoluter Pfadangabe)

require user Authorization
Ich kenne Deine User nicht, aber Syntax ist so:

Require Nutzerart [Nutzer1] [Nutzer2]

schreibst Du stattdessen:

require valid-user

werden alle User berechtigt, die in der Passwortdatei vorhanden sind, wenn sie ihren Usernamen und das richtige Passwort eingeben.
Das ist es was Du willst, oder?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Größten Dank an SQLFreak & Mario!

Es funktioniert  ;D:D


« HTLM Editor phase5 Internetzugriff verwehrenmozilla nvu und strato »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...