Stefan L: Dateiupload

Hi,

ich habe folgendes Script zum upload von Dateien geschrieben. Das funzt aber net. er sagt jedesmal daas er die datei nicht erstellen konnte. muss ich noch am webserver was einstellen. wenn ja waas??

<form action="<?php print $PHP_SELF ?>" method="post" enctype="multipart/form-data">

<input type="file" name="probe">
<input type="submit">
</form>

<?php

if (isset($probe))
{
    $probe = stripslashes($probe);
    copy($probe, "./newfile.txt");
}
?>

kann ich den inhalt der dateien die uim file-feld angeben wurden, auch auslesen ohne das ich sie hochlade. d.h. der user qwählt die datei auf seinen rechner aus und mein script auf dem server liest die datei aus und schreibt den inhgalt in ne db.

geht das

  1. Hi!

    Der von Dir verwendete Code ist hoffnungslos veraltet. Vor allem unter Sicherheits-Aspekten würde ich Dir die Verwendung von $_FILES und move_uploades_file() unbedingt empfehlen, wie das genau funktioniert ist unter folgenden Links sehr gut und ausführlich erklärt:

    http://www.php.net/manual/de/features.file-upload.php
    http://php-faq.de/q/q-formular-upload-php4.html

    Grüße
    Andreas

  2. muss ich noch am webserver was einstellen. wenn ja waas??

    hab mir jetzt dein script nicht genauer angeschaut, sollte aber funktionieren. check mal ob du schreibrechte auf dem Ordner des Webservers hast (chmod 777).

    kann ich den inhalt der dateien die uim file-feld angeben wurden, auch auslesen ohne das ich sie hochlade. d.h. der user qwählt die datei auf seinen rechner aus und mein script auf dem server liest die datei aus und schreibt den inhgalt in ne db.
    geht das

    ja, in der globalen Variablen $_FILES steckt alles drin was du brauchst:

    $filename = $_FILES['datei']['name'];
    $filetype = $_FILES['datei']['type'];
    $filesize = $_FILES['datei']['size'];
    $filetmp = $_FILES['datei']['tmp_name'];
    $fileerror = $_FILES['datei']['error'];

    Wenn Du es so Variablen zuweist kannst Du die Werte wunderbar hinschreiben wo Du möchtest; Ausgabe oder DB...

    Gruss AndreD

  3. Hallo Stefan,

    ich benutze folgende Abfrage für das Hochladen von Dateien.
    Funktioniert bei mir einwandfrei.

    CODE:
    <?php
    if ((!empty($HTTP_POST_FILES['probe']['tmp_name']))&&
    (is_uploaded_file($HTTP_POST_FILES['probe']['tmp_name'])))
    {
    move_uploaded_file($HTTP_POST_FILES['probe']['tmp_name'],$PFAD.$HTTP_POST_FILES['probe']['name']);
    }
    ?>

    Die max Größe deiner Datei muß in der php.ini eingestellt werden.
    php.ini:
    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;

    ; Whether to allow HTTP file uploads.
    file_uploads = On

    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir =

    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 2M