Avatar billede durd Nybegynder
09. juli 2001 - 01:20 Der er 12 kommentarer og
2 løsninger

Fil upload system....

Jeg vil gerne vide hvad jeg skal skrive for at brugerne på mit site kan uploade et billede af dem selv. Hvordan jeg får det til at virker med Gennemse, Upload knapper og det sådan... Kender til php, men jeg er ikke ekspert. Så jeg vil gerne have beskrivelse af hvordan jeg sætter det hele op også, hvis det kan lade sig gøre. Tak på forhånd... :] 
Avatar billede webben Nybegynder
09. juli 2001 - 01:30 #1
Avatar billede durd Nybegynder
09. juli 2001 - 01:36 #2
Tjekker det lige ud... :]
Avatar billede durd Nybegynder
09. juli 2001 - 01:49 #3
Den var ikke så god... Desværre.... :[
Avatar billede webben Nybegynder
09. juli 2001 - 01:57 #4
http://www.php-resource.de/scripts.php?cat=dir&do=PHP

prøv og se om du kan finde noget!!!! Der burde være rigeligt!!!

/webben
Avatar billede durd Nybegynder
09. juli 2001 - 02:06 #5
Jeg skal ikke have alle de der vilde systemer, bare have en simpel en hvor jeg kan uploade 1 billede til en mappe på mit web sted... Ikke alle de der url\'z...
Avatar billede jasber Nybegynder
09. juli 2001 - 05:54 #6
How can I let a user upload a file to the server in PHP?

The temporary file created by the upload only lasts until the script has
ended, so you need to copy the file somewhere.

if ($userfile<>\"none\") {
    if(!copy($userfile,\"/choose/your/path/$userfile_name\")) {
        print \"File failed to upload\";
    }
    else {
        print \"File uploaded\";
    }
}

The ENCTYPE parameter is required in your HTML to have the files
actually upload.

<form action=\"upload.php3\" method=\"post\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2000000\">  (2MByte)
Upload:<br>
<input type=\"file\" name=\"something\"><br>
<input type=\"submit\">
</form>

Also when you upload a file there are other variables associated with
the uploaded file name:
$something      = File Name of temp-file (none=file not uploaded!)
$something_name = Original File Name
$something_size = Original File Size
$something_type = Original File Type (MIME-Type, like .zip, .doc, ...)
Avatar billede dark-nisse Nybegynder
09. juli 2001 - 17:00 #7
<?
if(!$submit) {
?>
<form action=\"upload.php3\" method=\"post\" enctype=\"multipart/form-data\">
Upload:<br>
<input type=\"file\" name=\"something\"><br>
<input type=\"submit\" name=\"submit\">
</form>
<?
}
else {
copy($something,\"din root/$something\");
print \"Din fil er uploadet\";
}

det burde virke men er ikke testet er på vej ud af døren nemmerlig :o)
?>
Avatar billede durd Nybegynder
18. juli 2001 - 20:40 #8
Du sender den til upload.php3, men hvad kan jeg bruge det til når jeg ikke har den fil... Jeg ved jo ikke hvad jeg skal skrive for faaaanden...
Avatar billede durd Nybegynder
07. august 2001 - 12:27 #9
Håber at der er nogen der kommer med et ordentligt svar. D.v.s. et svar jeg kan bruge til noget. Vil jo gerne have en forklaring til hvordan jeg skal bære mig ad med at lave systemet. Hvor jeg skal skrive hvad for nogen mapper jeg vil have filen uploadet til. Er der ikke en der kan fortælle mig det? Ellers er der ikke nogen points til nogen hvis jeg ikke får et svar jeg kan bruge...
Avatar billede ztyxx Nybegynder
07. august 2001 - 12:42 #10

her er et script jeg selv har fundet på nettet, som virker helt fint, jeg copy/paster det lieg her til dig, lav først en fil der hedder fileupload.class der ska se sådan ud:

<?
/*
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] = \"No file was uploaded\"; }
        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;
        }
    }
}
?>

lav derefter en fil der hedder upload.php der ser sådan ud:
<html>
    <head>
        <title>Upload</title>
    </head>
<body>

<?
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/gif\";

// 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 = \"\";

// 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 . \"\\\" border=\\\"0\\\" 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=\"<?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>
<?
    if ($ACCEPT) {
        print(\"This form only accepts <b>\" . $ACCEPT . \"</b> files\\n\");
    }
?>

</body>
</html>
 
i denne fil står beskrevet hvordan du sætter det op.
Scriptet er skrevet af David Fox, Angryrobot Productions
(http://www.angryrobot.com) og er til fri afbenyttelse.
Held og lykke
Avatar billede durd Nybegynder
07. august 2001 - 14:11 #11
Jeg kan godt få det til at virke, men kun med den forudindstillede image/gif... Jeg kan ikke få image/jpeg til at virke selv om jeg ændrer $ACCEPT til = \"image/jpeg\"... Ka\' du hjælpe?
Avatar billede durd Nybegynder
07. august 2001 - 14:16 #12
OK! Nu er det ikke noget problem med at få jpeg uploadet også.. Fandt fejlen.. :] Ser lige om jeg kan gøre andre ting med scriptet også inden du får points\'ne.
Avatar billede durd Nybegynder
21. august 2001 - 11:49 #13
Det er lidt noget lort for jeg kan overhovedet ikke få det til at virke... Du skal da alligevel få nogen points som tak for hjælpen, og derfor giver jeg dig størstedelen af points\'ne.. Håber det er OK... Takker for hjælpen...
Avatar billede ztyxx Nybegynder
21. august 2001 - 13:01 #14
takker for point, hvad kan du ikke få til at virke, lad os lige kigge på det
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