Avatar billede Slettet bruger
04. maj 2005 - 11:13 Der er 18 kommentarer og
1 løsning

upload af billede (lokalt)

Hej eksperter, jeg har brug for et upload script, som kan upload til lokal computer...

Håber I kan hjælpe mig...
Avatar billede sukos Juniormester
04. maj 2005 - 11:21 #1
<?php

$root_path = $_SERVER["DOCUMENT_ROOT"];
$dir_path = "/galleri/";

$dist = $root_path . $dir_path;

if(is_dir($dist)) {
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
Vælg fil:<br>
<input name="upfile" type="file"><br>
<input type="submit" value="Upload">
</form>

<?php
if (isset($_FILES["upfile"])) {

        if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $dist . $_FILES["upfile"]["name"])) {
        echo"Filen, ". $_FILES["upfile"]["name"] ." er uploadet. <a href=\"". $dir_path . $_FILES["upfile"]["name"] ."\">". $_FILES["upfile"]["name"] ."</a>";
        }else{
        echo"Filen blev ikke uploadet?";
        }
}

}else{
echo"Fejl i dir-angivelse!";
}

?>
Avatar billede Slettet bruger
04. maj 2005 - 12:27 #2
Hvis jeg så også skal have et tekst felt, der skal sættes ind i databasen...

Altså billede's navn skal sættes ind, i felt: billede
og så en tekst på sammen side som upload funktionen, som skal hedde beskrivelse
Avatar billede Slettet bruger
04. maj 2005 - 12:38 #3
er det noget du gider at hjælpe med også?
Avatar billede sukos Juniormester
04. maj 2005 - 12:42 #4
Hmm, det er et billede som skal uploades? Altså ingen andre filtyper?
Avatar billede Slettet bruger
04. maj 2005 - 13:15 #5
kun billede ja, og så teksten fra et tekst felt, der skal sættes ind i en database...
Avatar billede Slettet bruger
04. maj 2005 - 13:16 #6
billede skal uploades og også sættes ind i database som sagt
Avatar billede sukos Juniormester
04. maj 2005 - 13:36 #7
Du skal så selv lige lave din connect til DB

<?php

$root_path = $_SERVER["DOCUMENT_ROOT"];
$dir_path = "/galleri/";

$dist = $root_path . $dir_path;

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

function badchar($var) {

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

$replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
while(list($key, $value) = each($replace)) {
$var = str_replace($key, $value, $var);
}

return $var;
}

// http://www.eksperten.dk/artikler/190
function add_slash($var){
return get_magic_quotes_gpc()?$var:addslashes($var);
}

// http://www.eksperten.dk/artikler/190
function strip_slash($var){
  return get_magic_quotes_runtime()?stripslashes($var):$var;
}


// Når data gemmes i DB
function toData($var){
return "'". add_slash($var) ."'";
}

// Når data outputtes til browser
function toHtml($var){
return htmlentities(strip_slash($var));
}

if(is_dir($dist)) {
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
Vælg en fil: (<?php echo implode(", ", $filtyper); ?>)<br>
<input name="upfile" type="file"><br />
Beskrivelse:<br />
<textarea name="description" cols="40" rows="8"></textarea><br />
<input type="submit" value="Upload">
</form>

<?php
if (isset($_FILES["upfile"])) {

    if(is_uploaded_file($_FILES["upfile"]["tmp_name"])) {


        if(false != ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {

            if(array_key_exists($str[2], $filtyper)) {
            $typen = end(explode(".", $_FILES["upfile"]["name"]));
            $filnavn = substr($_FILES["upfile"]["name"], 0, -strlen($typen)) . strtr($str[2], $filtyper);
            $filnavn = badchar($filnavn);

        if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $dist . $filnavn)) {

        // lav din connect til DB her
        $sql = "INSERT INTO `tablenavn` (`billede`, `beskrivelse`) VALUES (". toData($filnavn) .", ". toData($_POST["description"]) .")";
            if(@mysql_query($sql)) {
            echo"Filen, ". $filnavn ." er uploadet. <a href=\"". $dir_path . $filnavn ."\">". $filnavn ."</a>";
            }else{
            echo"Ups, fejl med query!<br />\n". mysql_error();
            @unlink($dist . $filnavn);
            }

        }else{
        echo"Filen blev ikke uploadet?";
        }



            }else{
            echo"Forkert filtype!";
            }
        }else{
        echo"Valgte fil er ikke et billede!";
        }
    }
}

}else{
echo"Fejl i dir-angivelse!";
}

?>
Avatar billede Slettet bruger
06. maj 2005 - 08:34 #8
Tak for hjælpen ligger du lige et svar?
Avatar billede Slettet bruger
06. maj 2005 - 08:34 #9
Du får nu 70 points da det et skide godt svar...
istedet for de kun 30---
God kristi himmelfart
Avatar billede sukos Juniormester
06. maj 2005 - 08:50 #10
selv tak! :O)

(burde nok lige tjekke om sidste tegn i navnet er et punktum, inden fil som uploades bliver navngivet)
Avatar billede Slettet bruger
06. maj 2005 - 08:51 #11
det er lige meget... ellers tak
Avatar billede sukos Juniormester
06. maj 2005 - 08:56 #12
Tror det kan gøres så'n:

$filnavn = substr($_FILES["upfile"]["name"], 0, -strlen($typen));
$filnavn = badchar($filnavn);

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

$filnavn = $filnavn . strtr($str[2], $filtyper);
Avatar billede sukos Juniormester
06. maj 2005 - 09:12 #13
Og hov, du skal nok lige ha' noget chmod på?

echo"Filen, ". $filnavn ." er uploadet. <a href=\"". $dir_path . $filnavn ."\">". $filnavn ."</a>";
chmod($dist . $filnavn, 0644);
Avatar billede Slettet bruger
06. maj 2005 - 09:28 #14
hvad er det præcist man bruger chmod til?
Avatar billede Slettet bruger
06. maj 2005 - 11:59 #15
kan du svarer på dette også : http://eksperten.dk/spm/615531 ?
Avatar billede sukos Juniormester
06. maj 2005 - 12:59 #16
chmod bruges på UNIX servere
chmod er "hvem ejer hvad" og derfor kan "læse, skrive, eksekvere"

chmod på windows er sædvanligvis urelevant, omend f.eks. upload fra en cd, hvor billedet er skrivebeskyttet, ja, så vil man kunnne slette det efterflg.

Kikker lige på det andet der.
Avatar billede Slettet bruger
20. maj 2005 - 08:36 #17
Tænkte lige på en ting, hvis det nu er jeg også vil kunne uploade, .doc dokumenter, er det så bare at udskifte:

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

med

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

?
Avatar billede sukos Juniormester
20. maj 2005 - 09:45 #18
Nej!
Det array der er til at navngive en fil korrekt ud fra hvilken billedtype billedet er.
Fås jo med
$str = getimagesize($_FILES["upfile"]["tmp_name"])
$str[2] indekerer hvilken filtype billedet er.

og en doc fil er jo ikke et billede!

Du kan så bruge noget med $_FILES["upfile"]["type"] men der skal man så også tjekke på filendelse, og en bruger kan jo godt omdøbe en fil til *.doc uden at det er en doc fil, men filtypen stadig er noget af det samme.

Men du kan evt. lave et array kun med filnavne, og så blot tjekke på om filendelsen er i array'et.
Men et sikkert tjek på hvilken filtype det er, er vist så svært at "garantere"
Avatar billede Slettet bruger
20. maj 2005 - 09:54 #19
uhh ha. det er ikke lige en af de nemme... :D
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

IT-JOB

Capgemini Danmark A/S

Java Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-metodespecialist og projektkoordinator i Ballerup

Politiets Efterretningstjeneste

Platform Engineer hos PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior specialister (DevSecOps) til Forsvarets nye Digitale Backbone