Avatar billede kulip Nybegynder
18. september 2006 - 15:56 Der er 30 kommentarer og
1 løsning

Fil upload.

Hejsa, jeg sidder og er ved at lave en scooterforum til min scooter team. jeg vil gerne have lavet sådan at man kan uploade et billede af sin scooter.

uploadside.php:
brugernavn1.JPG
brugernavn2.JPG
brugernavn3.JPG

osv osv, altså den skal ændre navnet på billedet til ens brugernavn, også lave en tæller bagved.

Viseside.php:
Viser de billede hvor ens brugernavn passer til.
Altså Jens1.jpg
jens2.jpg

osv osv..

Håber der er nogle som forstår mig, og kan hjælpe mig med mit problem.
Avatar billede coderdk Praktikant
18. september 2006 - 16:05 #1
Noget i stil med:

<?php

function findLedig( $brugernavn )
{
  $n = 1;
  while ( file_exists( $brugernavn . $n . ".jpg" ) ) $n++;
  return $brugernavn . $n . ".jpg";
}

if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
  if ( is_uploaded_file( $_FILES['upfil']['tmp_name'] ) )
  {
    if ( !move_uploaded_file( $_FILES['upfil']['tmp_name'], hentLedig( "brugernavn" ) ) )
    {
        die( "Fejl i upload." );
    }
  }
  else
  {
    die( "Fejl i upload." );
  }
}

?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="upfil">
<input type="submit" value="Send">
</form>
Avatar billede kulip Nybegynder
18. september 2006 - 16:10 #2
hvilken mappe uploader den til ? og skal jeg så ikke have en variabel som hedder $brugernavn = $_SESSION[s_navn]; ?
Avatar billede kulip Nybegynder
18. september 2006 - 16:12 #3
Fatal error: Call to undefined function: hentledig() in /hsphere/local/home/shost/vhcamp.dk/txr/test/upload.php on line 15
Avatar billede coderdk Praktikant
18. september 2006 - 16:17 #4
if ( !move_uploaded_file( $_FILES['upfil']['tmp_name'], hentLedig( "brugernavn" ) ) )

skal være:

if ( !move_uploaded_file( $_FILES['upfil']['tmp_name'], findLedig( "brugernavn" ) ) )

Den gør det til samme mappe som scriptet er i - Men det kan du jo rette.
Jo, du kan erstatte "brugernavn" med $_SESSION['s_navn'] - Husk session_start()...
Avatar billede kulip Nybegynder
18. september 2006 - 16:21 #5
nu skriver den fejl i upload, hvorfor det? har kun ændret:
if ( !move_uploaded_file( $_FILES['upfil']['tmp_name'], findLedig( "brugernavn" ) ) )
Avatar billede kulip Nybegynder
18. september 2006 - 16:34 #6
coderdk> ?
Avatar billede coderdk Praktikant
18. september 2006 - 16:36 #7
Prøv lige at lave den 2. die om til:

die( "Ingen upload." );

Bare så man kan kende forskel på de to :) Har du husket at sætte rettighederne på folderen der uploades til? Webserveren skal kunne skrive til den.
Avatar billede kulip Nybegynder
18. september 2006 - 16:38 #8
hvordan gør jeg det?
Avatar billede kulip Nybegynder
18. september 2006 - 16:38 #9
den skriver stadig: Fejl i upload.
Avatar billede kulip Nybegynder
18. september 2006 - 16:43 #10
jeg har fået det til at virke, kan du så hjælpe mig med at lave sådan at den kun læser de billeder som passer til ens brugernavn?
Avatar billede kulip Nybegynder
18. september 2006 - 16:45 #11
eller hmm, den kan kun uploade et billede, der kan ike være flere end 1.
Avatar billede kulip Nybegynder
18. september 2006 - 16:46 #12
gider du se om du kan lave så den kan uploade mere end et billede? altså ikke på engang, men når jeg uploader et nyt så kommer det ikke ind.
Avatar billede coderdk Praktikant
18. september 2006 - 17:26 #13
Denne virker hos mig:

<?php

    define( "FOLDER", "ud/" ); // Hvor skal de anbringes? Husk afslut med "/"
   
    if ( !is_writable( FOLDER ) )
    {
        die( 'Folderen ' . FOLDER . ' er ikke skrivbar!' );
    }
   
    function findLedig( $brugernavn )
    {
        $n = 1;
        while ( file_exists( FOLDER . $brugernavn . $n . ".jpg" ) ) $n++;
        return FOLDER . $brugernavn . $n . ".jpg";
    }
   
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
    {
        if ( is_uploaded_file( $_FILES['upfil']['tmp_name'] ) )
        {
            if ( !move_uploaded_file( $_FILES['upfil']['tmp_name'], findLedig( "brugernavn" ) ) )
            {
                die( "Fejl i upload." );
            }
        }
        else
        {
            die( "Fejl i upload." );
        }
    }
   
    function hentFiler( $brugernavn )
    {
        $filer = glob( FOLDER . $brugernavn . '*' );
        natsort( $filer );
        return $filer;
    }

    $filer = hentFiler( "brugernavn" );
    foreach ( $filer as $fil )
    {
        echo '<img src="' . $fil . '"><br>';
    }

?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="upfil">
<input type="submit" value="Send">
</form>
Avatar billede kulip Nybegynder
18. september 2006 - 20:02 #14
kan du ikke lave sådan at det er en anden side, hvor at den læser de filer , som passer med brugernavn??
Avatar billede kulip Nybegynder
18. september 2006 - 20:20 #15
og det skal passe til det første script, som du lavede, fandt ud af at det virkede fint nok.
Avatar billede coderdk Praktikant
18. september 2006 - 20:50 #16
Du skal bare smide:

    $filer = hentFiler( "brugernavn" );
    foreach ( $filer as $fil )
    {
        echo '<img src="' . $fil . '"><br>';
    }

ind på en anden side...
Avatar billede coderdk Praktikant
18. september 2006 - 20:50 #17
(Og funktionen naturligvis)

:-D
Avatar billede kulip Nybegynder
18. september 2006 - 21:03 #18
hvad mener du med funktionen??, men skal den ikke første lige læse folderen osv?
Avatar billede coderdk Praktikant
18. september 2006 - 21:12 #19
For at vise billederne skal du bruge:

    function hentFiler( $brugernavn )
    {
        $filer = glob( FOLDER . $brugernavn . '*' );
        natsort( $filer );
        return $filer;
    }

    $filer = hentFiler( "brugernavn" );
    foreach ( $filer as $fil )
    {
        echo '<img src="' . $fil . '"><br>';
    }


Det var det jeg mente :) Den kan naturligvis tilpasses!
Avatar billede sjh Nybegynder
18. september 2006 - 23:11 #20
Hvis der skal uploades flere filer på en gang så prøv den her:

<?php
  // getcwd() -> http://dk.php.net/manual/da/function.getcwd.php
  define("UPLOAD_DIR", getcwd()."/"); // Hvor skal de anbringes? Husk afslut med "/"

  $name    = "upload"; // samme navn som i: <input type="file" name="upload[]"...
  $number  = 1; // filnavnet starter med en. (test1.xxx)
  $username = "Brugernavn"; // filename(number).xxx
 
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $length = count($_FILES[$name]["name"]);
    for($i = 0; $i < $length; $i++) {
      $filetemp = $_FILES[$name]["tmp_name"][$i];
      if (is_uploaded_file($filetemp)) {
        $filename = $_FILES[$name]["name"][$i];
        $filesize = $_FILES[$name]["size"][$i];
        $filetype = strrchr($filename, ".");
        $new_file = UPLOAD_DIR.$username.$number.$filetype;
        while (file_exists($new_file)) {
          $number++;
          $new_file = UPLOAD_DIR.$username.$number.$filetype;
        }
        if (@move_uploaded_file($filetemp, $new_file)) {
          echo "Uploaded: $new_file ($filesize bytes)<br>"; // udskriver uploaded filer.
        }
      }
    }
  }
?>
<form action="#" method="post" enctype="multipart/form-data">
  <!-- Glem ikke [] i name="upload[]" -->
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="file" name="upload[]" size="40"><br>
  <input type="submit" name="submit" value="Upload billede(er)">
</form>
Avatar billede sjh Nybegynder
18. september 2006 - 23:18 #21
ha ha flot billede.. http://vhcamp.dk/txr/test/brugernavn6.jpg :D det sker ikke med min version.. med mindre man selv omdøber en tekstfile til .jpg
Avatar billede kulip Nybegynder
19. september 2006 - 09:48 #22
coderdk> jeg syntes ikke at:

<?
function hentFiler( $brugernavn )
    {
        $filer = glob( FOLDER . $brugernavn . '*' );
        natsort( $filer );
        return $filer;
    }

    $filer = hentFiler( "brugernavn" );
    foreach ( $filer as $fil )
    {
        echo '<img src="' . $fil . '"><br>';
    }
?>

Virker?
Avatar billede coderdk Praktikant
19. september 2006 - 11:54 #23
Ah mig der stener, jeg manglede define'n:

define( "FOLDER", "ud/" ); // Hvor skal de anbringes? Husk afslut med "/"

Ellers ved den jo ikke hvor det er :)
Avatar billede kulip Nybegynder
19. september 2006 - 17:01 #24
mange tak, nu virker det. men kan du ikke hjælpe mig med at lave sådan at det kun er JPG man kan uploade, og sådan at når man har uploadet et billede, så skriver den "billede uploadet?
Avatar billede coderdk Praktikant
19. september 2006 - 17:34 #25
<?php

    define( "FOLDER", "ud/" ); // Hvor skal de anbringes? Husk afslut med "/"
 
    if ( !is_writable( FOLDER ) )
    {
        die( 'Folderen ' . FOLDER . ' er ikke skrivbar!' );
    }
 
    function findLedig( $brugernavn )
    {
        $n = 1;
        while ( file_exists( FOLDER . $brugernavn . $n . ".jpg" ) ) $n++;
        return FOLDER . $brugernavn . $n . ".jpg";
    }
 
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
    {
        if ( is_uploaded_file( $_FILES['upfil']['tmp_name'] ) )
        {
            $navn = findLedig( "brugernavn" );
            if ( !move_uploaded_file( $_FILES['upfil']['tmp_name'], $navn ) )
            {
                die( "Fejl i upload." );
            }
            else
            {
                if ( $type = getimagesize( $navn ) && $type[2] == 2 )
                {
                    echo "Billede uploadet!<br>";
                }
                else
                {
                    unlink( $navn );
                    die( "Kun jpg!" );
                }
            }
        }
        else
        {
            die( "Fejl i upload." );
        }
    }

?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="upfil">
<input type="submit" value="Send">
</form>


:-)
Avatar billede kulip Nybegynder
19. september 2006 - 19:38 #26
hmm, der skal også være sådan at den kan tage JPEG
Avatar billede coderdk Praktikant
19. september 2006 - 20:13 #27
jpeg er det samme som jpg :P jeg identificerer billedet med getimagesize - den er sådan set ligeglad med hvad de hedder til efternavn, den kigger inde i filen om det er JPEG
Avatar billede kulip Nybegynder
19. september 2006 - 20:18 #28
Jamen så virker dit script ikke :)- sådan kan vi også sige det. hehe, for når jeg uploader et JPEG billede, skriver den "kun jpg".
Avatar billede coderdk Praktikant
19. september 2006 - 20:46 #29
Så er det PHP's getimagesize der ikke virker ;) Har du det billede på en URL et sted, for jeg vil da godt se om det er billedet der har noget specielt i sig.
Jeg bruger selv metoden flere andre steder, og der virker det skam ;)
Avatar billede kulip Nybegynder
19. september 2006 - 20:48 #30
Avatar billede coderdk Praktikant
19. september 2006 - 21:32 #31
Ok, PHP er ikke så lazy som jeg troede! Prøv at lave:

                if ( $type = getimagesize( $navn ) && $type[2] == 2 )
                {
                    echo "Billede uploadet!<br>";
                }
                else
                {
                    unlink( $navn );
                    die( "Kun jpg!" );
                }

om til:

                if ( $type = getimagesize( $navn ) )
                {
                    if ( $type[2] == 2 )
                    {
                        echo "Billede uploadet!<br>";
                    }
                    else
                    {
                        unlink( $navn );
                        die( "Kun jpg!" );
                    }
                }
                else
                {
                    unlink( $navn );
                    die( "Kun jpg!" );
                }
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