Avatar billede gizmo1234 Nybegynder
25. januar 2004 - 13:46 Der er 12 kommentarer og
1 løsning

Uploade + vise billede

Hej.
Jeg har et lille problem. Jeg skal lave en funktion hvor man kan uploade et billede til en server, og derefter skal den så vise billedet på en ny side... Jeg kan godt få den til at uploade billedet, men når man trykker gennemse og finder billedet, så skriver den jo ikke kun navnet på billedet, men fx C:\documents and settings\ osv. Kan man så godt gøre sådan at den kun vælger navnet på den side hvor den skal vise billedet? for hvis jeg gør det nu, så kommer det jo på den side hvor man skal se billedet til at stå: <img src="c:\documents and settings\osv"> og det duer  jo ikke... Det er lidt svært at forklare, men for at gøre det kort, er det så muligt at få php til at forstå at den kun skal vælge det sidste i gennemse koden... Et lille eksempel:

Man har lige fundet det billede som man vil bruge og koden er så: C:\Documents and Settings\computer\Skrivebord\billede.jpg og den så kun vælger billede.jpg... Kan man det?
Avatar billede detox Nybegynder
25. januar 2004 - 14:29 #1
Til dit spørgsmål om at trække filnavnet ud af din sti kan du bruge: basename($sti).
Men jeg forstår ikke det skulle være nødvendigt, hvis du flytter din oploadede fil har du jo den nye sti og navn.
Avatar billede gizmo1234 Nybegynder
25. januar 2004 - 15:20 #2
Ja, men det er fordi at den smider informationen ind på mysqlserveren, og så henter jeg den via $row[picture], og så gør jeg sådan her: <img src='$row[picture]'> og derfor skal jeg kun bruge navnet... Det der basename, hvordan virker det lige?
Avatar billede googolplex Novice
25. januar 2004 - 15:54 #3
Hvis din sti ser således ud:

/mappe/til/fil/minfil.php

Så returnerer basename()

minfil.php

Aner ikke hvordan du får 'resten' med hvis filen ligger i en mappe længere ude på din webside, har selv samme problem :(
Avatar billede gizmo1234 Nybegynder
25. januar 2004 - 16:10 #4
det der med at få den til at lægge længere ude er vel bare at skrive <img src='/mappe/mappe/basename()'> Men hvordan skal man lige gøre det med basename... Har forstået hvordan den virker nu, men hvordan skal den skrives ind i php ? Er der ikke en der kan komme med et eksempel?
Avatar billede detox Nybegynder
25. januar 2004 - 17:07 #5
Jamen du skriver det jo selv:

echo "<img src='/mappe/mappe/".basename($row['picture'])."'>";
Avatar billede gizmo1234 Nybegynder
25. januar 2004 - 18:24 #6
Det hjælper på det, men når jeg uploader et billede til mig ftp ser mysql det som noget kodesjovt... Her er koden til det jeg bruger til at uploader billeder:
Kan lige give jer et eksempel:
Uploadede en fil der hed hash.jpg (bare ved et tilfælde, ikke noget der ;) og så ser mysql serveren det som /tmp/phpsKNaSP

Kan i se hvad det er der gør sådan?

<?php


$stop = "</td>\n</tr></table>\n</center></body></html>";

$dist = $_SERVER["DOCUMENT_ROOT"] ."/test/bio/upload/";


if(isset($_FILES["singlefile"])) {


$str1 = $_FILES["singlefile"]["name"];
$str2 = $_FILES["singlefile"]["size"];
$str3 = $_FILES["singlefile"]["type"];



$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "image/x-png");

    if ($_FILES["singlefile"]["name"] == "") {
echo"Ingen fil blev valgt <a href=\"uploadform.php\">tilbage</a>";
echo $stop;
exit;
    }

    if (!in_array($_FILES["singlefile"]["type"], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>". $str3 ."</b> er ikke tilladt for upload! <a href=\"uploadform.php\">tilbage</a>";
echo $stop;
exit;
    }

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

    move_uploaded_file($_FILES["singlefile"]["tmp_name"], $dist . $_FILES["singlefile"]["name"]);

    echo"<font face=verdana size=1 color=333333>Filen blev uploadet<p>\n</font>";
    echo "<font face=verdana size=1 color=333333><b>Navn:</b> ". $str1 ."<br>\n</font>";
    echo"<font face=verdana size=1 color=333333><b>St&oslash;rrelse:</b> ". $str2 ." bytes<br>\n</font>";
    echo"<font face=verdana size=1 color=333333><b>Filtype:</b> ". $str3 ."<br>\n\n\n</font>";
    echo"<font face=verdana size=1 color=333333><a href='show.php'>Vis reklame siden</a>";

        }else{
        echo"Failed!";
    }

        }
     


?>
Avatar billede gizmo1234 Nybegynder
25. januar 2004 - 19:47 #7
Altså den skal jo egentlig sende det som der stå i ["name"] til mysql serveren, så den kan hente det rigtige navn, hvordan får man den til det? Sætter lige points til 150...
Avatar billede gizmo1234 Nybegynder
25. januar 2004 - 19:48 #8
Nå, det kan man ikke ændre mere...
Avatar billede detox Nybegynder
26. januar 2004 - 00:43 #9
Jeg kan ikke se noget kode der gemmer navnet i MySQL, men du har ret i at bruge: $_FILES["singlefile"]["name"] (eller $str1, hvor du osse har lagt navnet).
Avatar billede gizmo1234 Nybegynder
26. januar 2004 - 06:31 #10
Hvis jeg nu gerne ville sætte sådan en kode ind i koden ovenover hvor den faktisk også gemmer navnet, hvordan skulle det så se ud?
Avatar billede detox Nybegynder
26. januar 2004 - 14:20 #11
Du kunne jo indsætte koden lige efter:
move_uploaded_file($_FILES["singlefile"]["tmp_name"], $dist . $_FILES["singlefile"]["name"]);
Det vil jo så være en ganske almindelig insert og da du kender $dist behøver du kun indsætte selve navnet. Fx:

$res = mysql_query("insert into billed_tabel (navn, storrelse, filtype) values ('$str1', '$str2', '$str3')");
if ($res) echo "Indsat i database<br />\n";
else echo "Der gik noget galt ved indsættelse i databasen!<br />\n";
Avatar billede gizmo1234 Nybegynder
26. januar 2004 - 16:40 #12
Yes sir, det virker ski :) Kommer du lige med et svar?
Avatar billede detox Nybegynder
28. januar 2004 - 21:42 #13
Ja da c",)
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