Avatar billede Slettet bruger
07. august 2007 - 18:06 Der er 4 kommentarer og
1 løsning

Hjælp til file upload

Hej.

I dette spm.

http://www.eksperten.dk/spm/87610

fandt jeg de to nedenstående filer, men jeg kan ikke rigtig få det til at virke. Der er en masse \ i de to filer, og Dreamweaver CS3 kan så ikke rigtig finde ud af det.

Jeg har så fjernet dem, men jeg er nok kommet til at fjerne nogen der ikke skulle ?

Nogen der kan gennemskue sådan noget her ?


Første fil er upload.php som er formularen. Gennemse virker.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
        <title>Upload</title>
  </head>
<body>

<?php
require("fileupload.class");

// --------------------------------
// Variables
// --------------------------------

// The path to the directory where you want the
// uploaded files to be saved. This MUST end with a
// trailing slash unless you use $PATH = \"\"; to
// upload to the current directory. Whatever directory
// you choose, please chmod 777 that directory.

    $PATH = "uploads/";

// The name of the file field in your form.

    $FILENAME = "userfile";

// ACCEPT mode - if you only want to accept
// a certain type of file.
// possible file types that PHP recognizes includes:
//
// OPTIONS INCLUDE:
//  text/plain
//  image/gif
//  image/jpeg
//  image/png

    $ACCEPT = "image/jpg";

// If no extension is supplied, and the browser or PHP
// can not figure out what type of file it is, you can
// add a default extension - like \".jpg\" or \".txt\"

    $EXTENSION = ".jpg";

// SAVE_MODE: if your are attempting to upload
// a file with the same name as another file in the
// $PATH directory
//
// OPTIONS:
//  1 = overwrite mode
//  2 = create new with incremental extention
//  3= do nothing if exists, highest protection

    $SAVE_MODE = 1;


#--------------------------------#
# PHP
#--------------------------------#

function print_file($file, $type, $mode) {
    if($file) {
        if(ereg("image", $type)) {
            echo "<img src='' . $file . '' alt='' '>'";
        }
        else {
            $userfile = fopen($file, "r");
            while(!feof($userfile)) {
                $line = fgets($userfile, 255);
                switch($mode){
                    case 1:
                        echo $line;
                        break;
                    case 2:
                        echo nl2br(ereg_replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", htmlentities($line)));
                        break;
                }   
            }
        }
    }
}

$upload = new uploader;
$upload->max_filesize(30000);

if($upload->upload("$FILENAME", "$ACCEPT", "$EXTENSION")) {
    while(list($key, $var) = each($upload->file)){
        echo $key . " = " . $var . "<br>";
    }
    if($upload->save_file("$PATH", $SAVE_MODE)) {
        print("<p>Saved as: " . $upload->new_file . "<p>");
        print_file($upload->new_file, $upload->file["type"], 2);
    }
}

if($upload->errors) {
    while(list($key, $var) = each($upload->errors)){
        echo "<p>" . $var . "<br>";
    }
}

if ($NEW_NAME) {
    print("<p>Name of image save: <b>$NEW_NAME</b></p>");
}

#--------------------------------#
# HTML FORM
#--------------------------------#
?>

    <form enctype="multipart/form-data" action="<?php print($PHP_SELF);?>"method="POST">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">Send this file:
        <input name="userfile" type="file">
        <input type="submit" value="Send File">
    </form>
    <hr>
<?php
    if ($ACCEPT) {
        print("This form only accepts <b>" . $ACCEPT . "</b> files\n");
    }
?>

</body>
</html>

Men så er der filen fileupload.class og den siger DW at den kan den ikke rette i og har ikke farvekode på kommandoerne. Noget uoverskueligt.

<?php
/*
Error codes:
    0 - \"No file was uploaded\"
    1 - \"Maximum file size exceeded\"
    2 - \"Maximum image size exceeded\"
    3 - \"Only specified file type may be uploaded\"
    4 - \"File already exists\" (save only)
*/

class uploader {

    var $file;
    var $errors;
    var $accepted;
    var $new_file;
    var $max_filesize;
    var $max_image_width;
    var $max_image_height;

    function max_filesize($size){
        $this->max_filesize = $size;
    }

    function max_image_size($width, $height){
        $this->max_image_width = $width;
        $this->max_image_height = $height;
    }

    function upload($filename, $accept_type, $extention) {
        // get all the properties of the file
        $index = array("file", "name", "size", "type");
        for($i = 0; $i < 4; $i++) {
            $file_var = '$' . $filename . (($index[$i] != "file") ? "_" . $index[$i] : "");
            eval('global ' . $file_var . ';');
            eval('$this->file[$index[$i]] = ' . $file_var . ';');
        }
   
        if($this->file["file"] && $this->file["file"] != "none") {
            //test max size
            if($this->max_filesize && $this->file["size"] > $this->max_filesize) {
                $this->errors[1] = "Maximum file size exceeded. File may be no larger than " . $this->max_filesize/1000 . "KB.";
                return False;
            }
            if(ereg("image", $this->file["type"])) {
                $image = getimagesize($this->file["file"]);
                $this->file["width"] = $image[0];
                $this->file["height"] = $image[1];
           
                // test max image size
                if(($this->max_image_width || $this->max_image_height) && (($this->file["width"] > $this->max_image_width) || ($this->file["height"] > $this->max_image_height))) {
                    $this->errors[2] = "Maximum image size exceeded. Image may be no more than " . $this->max_image_width . " x " . $this->max_image_height . " pixels";
                    return False;
                }   
                switch($image[2]) {
                    case 1:
                        $this->file["extention"] = ".gif";
                        break;
                    case 2:
                        $this->file["extention"] = ".jpg";
                        break;
                    case 3:
                        $this->file["extention"] = ".png";
                        break;
                    default:
                        $this->file["extention"] = $extention;
                        break;
                }
            }
            else if(!ereg("(\\.)([a-z0-9]{3,5})$", $this->file["name"]) && !$extention) {
                // add new mime types here
                switch($this->file["type"]) {
                    case "text/plain":
                        $this->file["extention"] = ".txt";
                        break;
                    default:
                        break;
                }           
            }
            else {
                $this->file["extention"] = $extention;
            }
       
            // check to see if the file is of type specified
            if($accept_type) {
                if(ereg($accept_type, $this->file["type"])) { $this->accepted = True; }
                else { $this->errors[3] = "Only " . ereg_replace("\\|", " or ", $accept_type) . " files may be uploaded"; }
            }
            else { $this->accepted = True; }
        }
        else { $this->errors[0] = "Ingen billede sendt"; }
        return $this->accepted;
    }

    function save_file($path, $mode){
        global $NEW_NAME;
       
        if($this->accepted) {
            // very strict naming of file.. only lowercase letters, numbers and underscores
            $new_name = ereg_replace("[^a-z0-9._]", "", ereg_replace(" ", "_", ereg_replace("%20", "_", strtolower($this->file["name"]))));

            // check for extention and remove
            if(ereg("(\\.)([a-z0-9]{3,5})$", $new_name)) {
                $pos = strrpos($new_name, ".");
                if(!$this->file["extention"]) { $this->file["extention"] = substr($new_name, $pos, strlen($new_name)); }
                $new_name = substr($new_name, 0, $pos);
               
            }
            $this->new_file = $path . $new_name . $this->file["extention"];
            $NEW_NAME = $new_name . $this->file["extention"];
           
            switch($mode) {
                case 1: // overwrite mode
                    $aok = copy($this->file["file"], $this->new_file);
                    break;
                case 2: // create new with incremental extention
                    while(file_exists($path . $new_name . $copy . $this->file["extention"])) {
                        $copy = "_copy" . $n;
                        $n++;
                    }
                    $this->new_file = $path . $new_name . $copy . $this->file["extention"];
                    $aok = copy($this->file["file"], $this->new_file);
                    break;
                case 3: // do nothing if exists, highest protection
                    if(file_exists($this->new_file)){
                        $this->errors[4] = "File &quot" . $this->new_file . "&quot already exists";
                    }
                    else {
                        $aok = rename($this->file["file"], $this->new_file);
                    }
                    break;
                default:
                    break;
            }
            if(!$aok) { unset($this->new_file); }
            return $aok;
        }
    }
}
?>

Jeg bliver meget glad, hvis det kan komme til at virke.

Ole.
Avatar billede erikjacobsen Ekspert
07. august 2007 - 18:26 #1
Det er godt nok gamle sager. Glem den, og kig i stedet for på http://www.eksperten.dk/artikler/1098
Avatar billede Slettet bruger
07. august 2007 - 18:38 #2
Tak for det Erik. Ja, den er noget gammel, men det var så den jeg lige fandt :-)

Jeg ser på dit link.
Avatar billede Slettet bruger
07. august 2007 - 21:12 #3
Det virker jo efter hensigten :)

Mon du er begybdt at samle points ?

TAK Erik.

Ole.
Avatar billede erikjacobsen Ekspert
07. august 2007 - 21:14 #4
Nej tak, Ole. Pointene er dine og kan bruges til andre ting ;)
Avatar billede Slettet bruger
07. august 2007 - 21:21 #5
Ok, så finder jeg noget andet at bruge dem til :)

Mange tak for hjælpen.

Ole.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester