Avatar billede birgittejensen Nybegynder
29. september 2006 - 11:44 Der er 7 kommentarer og
1 løsning

Venner skal kunne uploade til min server

Hej,
Jeg søger et script, der kan sættes op på min server, så mine venner kan få adgang til at uploade billeder til min server. Fx til en mappe, der hedder billeder. Hvordan bærer jeg mig ad med at gøre det? Har set det gjort før, hvor jeg bare gik til en side, fyldte informationerne ind lige som på en gratis billedhost, og så uploadede jeg mine billeder til vores server via IE.

På forhånd tak.
Avatar billede michael_stim Ekspert
29. september 2006 - 12:03 #1
Du skal nok kikke på FTP.
Avatar billede birgittejensen Nybegynder
29. september 2006 - 12:59 #2
Ja, men så må man kunne lave en side, hvor der er nogle input bokse - destination på egen computer, navn på billede og så en knap, der siger upload, hvor der er forbindelse til ftp'en?
Avatar billede michael_stim Ekspert
29. september 2006 - 13:07 #3
Du kan da godt lave et script, men så skal du sætte din server op (hvis scriptet skal køre på den) til at kunne køre et scriptsprog (ASP, PHP, .NET osv). Når du så har bestemt dig for sprogbrug kan vi hjælpe dig.
Avatar billede michael_stim Ekspert
29. september 2006 - 13:09 #4
http://www.eksperten.dk/artikler/1020
En guide til hvordan du sætter PHP op på din server.
Avatar billede birgittejensen Nybegynder
29. september 2006 - 13:45 #5
Der er allerede de ting installeret .. har webhotel hos b-one.
Avatar billede birgittejensen Nybegynder
29. september 2006 - 21:54 #7
ok .. jeg har fundet et script - tak :o)
Nu vil jeg så gerne have, at det er muligt for den der uploader at få adressen til billedet efter endt upload. Det script jeg har fundet ser således ud:

<?php
session_start(); // Bruges kun til vise en besked ved fejl/vellykket upload

// Navn på session som viser beskeder
$sess_navn = "besked";

// ca. 180 Kb må billedet fylde
$max_kb = 180;

// Sti til roden af dit domæne. En "defineret" sti kan også bruges:
// $base_path = "/disksti/til/roden/af/domain/";
$base_path = $_SERVER["DOCUMENT_ROOT"];

// Det dir som der skal uploades til
$image_dir = "rokken";


// Filtyper man kan uploade. Husk på dette uploadscript KUN er til billeder!
// Ved upload tjekkes om getimagesize() er sand, og bruges så sammen med strtr() til at navngive uploaded fil med filtypen
// http://dk.php.net/manual/da/function.getimagesize.php

$filtyper = array(1 => "gif", 2 => "jpg", 3 => "png", 4 => "swf");

// Tjek for skriverettigheder til uploaddir? 1 = ja, 0 = nej
$tjek_skriv = 1;


// HERUNDER BEHØVER/SKAL DU IKKE ÆNDRE !!!!!

function check_perms($var) {

// http://dk.php.net/manual/da/function.fileperms.php

$perms = fileperms($var);

if (($perms & 0xC000) == 0xC000) {
  // Socket
  $info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
  // Symbolic Link
  $info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
  // Regular
  $info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
  // Block special
  $info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
  // Directory
  $info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
  // Character special
  $info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
  // FIFO pipe
  $info = 'p';
} else {
  // Unknown
  $info = 'u';
}

// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
          (($perms & 0x0800) ? 's' : 'x' ) :
          (($perms & 0x0800) ? 'S' : '-'));

// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
          (($perms & 0x0400) ? 's' : 'x' ) :
          (($perms & 0x0400) ? 'S' : '-'));

// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
          (($perms & 0x0200) ? 't' : 'x' ) :
          (($perms & 0x0200) ? 'T' : '-'));

return $info;
}

function badchar($var) { // Fjerner "bad" tegn i filnavn

$bad = "\\\"'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\$";

    for($i = 0; $i < strlen($bad); $i++) {
    $var = str_replace($bad[$i], "", $var);
    }

$replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");

    foreach($replace as $key => $value) {
    $var = str_replace($key, $value, $var);
    }

return $var;
}

$errors = array(); // array for at vise evt. fejl i dir m.m.

if(!is_dir($base_path ."/". $image_dir)) {
    if(is_dir($image_dir)) {

    $moveto = $image_dir ."/";

        if(true == $tjek_skriv) {
        $rettigheder = strtolower(check_perms($moveto));
            if($rettigheder != "drwxrwxrwx") {
            $errors[] = "Tjek at der er skriverettigheder til uploaddir, \$image_dir = ". $image_dir;
            }
        }
       
    }else{
    $errors[] = "Dir som der skal uploades til findes ikke!!! \$image_dir = \"". $image_dir ."\"";
    }

}else{

$moveto = $base_path ."/". $image_dir ."/";

    if(true == $tjek_skriv) {
    $rettigheder = strtolower(check_perms($moveto));
        if($rettigheder != "drwxrwxrwx") {
        $errors[] = "Tjek at der er skriverettigheder til uploaddir, \$image_dir = ". $image_dir;
        }
    }
}


$ver = phpversion();

if($ver < 4.1) {
$errors[] = "Scriptet kan kun bruges fra PHP ver. 4.1.0 og op";
}

$error_code = true;
if($ver < 4.2) {
$error_code = false;
}



if (isset($_FILES["upfile"]) && empty($errors)) {


    if(true == $error_code) { // Fra PHP ver. 4.2.0 får man også ["error"] med ved upload
    $arg = array(1 => "Filen er større end tilladt upload i php.ini", 2 => "Filen er større end ". floor(($max_kb*1024)/1000) ." Kb", 3 => "Sorry, men kun en del af filen blev uploadet", 4 => "Vælg en fil til upload!", 6 => "upload_tmp_dir er ikke defineret korrekt!");

        if($_FILES["upfile"]["error"] > 0) {
        $_SESSION[$sess_navn] = "Fejl ved upload: ". strtr($_FILES["upfile"]["error"], $arg);
        header("Location:". $_SERVER["PHP_SELF"]);
        exit();
        }

    }else{

        if(trim($_FILES["upfile"]["name"]) == "") {
        $_SESSION[$sess_navn] = "Du skal vælge en fil til upload!!!";
        header("Location:". $_SERVER["PHP_SELF"]);
        exit();
        }
    }


    if($_FILES["upfile"]["size"] > ($max_kb*1024)) {
    $_SESSION[$sess_navn] = "Filen er for stor til upload!!!";
    header("Location:". $_SERVER["PHP_SELF"]);
    exit();
    }

    if(false == ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {
    $_SESSION[$sess_navn] = "Valgte fil til upload er ikke en billedfil!!!";
    header("Location:". $_SERVER["PHP_SELF"]);
    exit();
    }

    if(!array_key_exists($str[2], $filtyper)) {
    $_SESSION[$sess_navn] = "Filtypen er ikke tilladt for upload!";
    header("Location:". $_SERVER["PHP_SELF"]);
    exit();
    }

    $file_name = $_FILES["upfile"]["name"];

    $typen = end(explode(".", $file_name));
    $filnavn = substr($file_name, 0, -strlen($typen));

        if(empty($filnavn)) {
        $filnavn = $file_name;
        }

        if(substr($filnavn, -1, 1) !=".") {
        $filnavn = $filnavn .".";
        }

    $filnavn = $filnavn . strtr($str[2], $filtyper);
    $filnavn = badchar($filnavn);

        if(is_file($moveto . $filnavn)) {
            $i = 0;
            while (is_file($moveto . $filnavn)) {
            $i++;
            $filnavn = sprintf("%03u", $i) ."_". $filnavn;
            }
        }

    if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $moveto . $filnavn)) {
    chmod($moveto . $filnavn, 0644);
    $_SESSION[$sess_navn] = "Billedet er blevet uploadet!";
    }else{
    $_SESSION[$sess_navn] = "Billedet kunne desværre ikke flyttes!";
    }

    header("Location:". $_SERVER["PHP_SELF"]);
    exit();
}

?><html><head><title>Billed upload</title>
</head>

<body>

<?php

if(!empty($errors)) {

$tekst = implode("\n\r", $errors);
echo nl2br(htmlentities($tekst));

}else{

?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">

Accepterede filtyper for upload er <?php echo implode(", ", $filtyper); ?><br />
Max. filst&oslash;rrelse for upload er <?php echo floor(($max_kb*1024)/1000); ?> Kb<br /><br />

<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo($max_kb*1024); ?>">
<input name="upfile" type="file" size="32"> <input type="submit" value="Upload">
</form>

<?php

  // Viser en evt. besked sat med session
    if(isset($_SESSION[$sess_navn])) {
    echo htmlentities($_SESSION[$sess_navn]);
    unset($_SESSION[$sess_navn]);
    }
}
?>

</body></html>


Så den her:  $_SESSION[$sess_navn] = "Billedet er blevet uploadet!";
kan den på en eller anden måde komme til at kalde adressen, så de kan se det? Evt oven i købet vise adressen i et img tag, så det er lige til at kopiere og paste til forum?

På forhånd tak!
Avatar billede birgittejensen Nybegynder
01. oktober 2006 - 21:16 #8
opretter lige et andet spørgsmål
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
Kurser inden for grundlæggende programmering

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