Avatar billede still Nybegynder
31. august 2005 - 10:15 Der er 12 kommentarer og
1 løsning

Image host script.

Hej, jeg lede efter et gratis php script til at uploade billede til en server, hvorefter den viser stien. Jeg har kigget på mange men de koster alle fra 25$ og opefter.
På forhånd tak,
Avatar billede micmicmicmic Nybegynder
31. august 2005 - 10:25 #1
//upload.php
<form enctype="multipart/form-data" action="uploadok.php" method="post">
<table cellspacing="2" cellpadding="2" border="0">
<tr>
    <td>Vælg fil 1:</td>
    <td><input size="30" name="fil[]" type="file"></td>
</tr>
<tr>
<td>Navn:</td>
<td><input type="text" name="navn" value="" size="30" maxlength="25"><input type="submit" value="Upload fil"></td>
</tr>
</form>

//uploadok.php

<?PHP
foreach ($_FILES['fil']['name'] as $key => $value)
{

//Her skal filen flyttes fra
$src = $_FILES['fil']['tmp_name'][$key];

//Hvilken type fil arbejder vi med?
$ext = strtolower(end(explode(".", $_FILES['fil']['name'][$key])));

//laver lige et par variabler :-)
$kommentar = $kommentar;
$uge = $uge;
$tid = time();

//Her giver vi billedet et andet navn, så der ikke kommer to ens navne…
$nytNavn = "wallpaper-" . $navn . "-" . $tid . "." . $ext;

//Her er vores destination for det store billede
$dst = "./upload/" . $nytNavn;

//her uploades det store billede:
copy($src, $dst);

//billed-funktioner:
$image = $dst;

//hvis billedet eksisterer
if(file_exists($image)) {

//billedet eksisterer
$foto = 1;

//find størrelsen
$imgsize = getimagesize($image);

//hvis bredden er mere end 200px
if($imgsize[0] > 200) {

//sæt det nye billedes bredde til 200,
//og regn højden ud så propertionerne passer
$width = 200;
$height = $imgsize[1] / ($imgsize[0] / 200);

//lav et nyt, blankt billede
$dst_img=imagecreatetruecolor($width,$height);

//åbn kildebilledet
$src_img=ImageCreateFromJpeg("$image");

//kopiér og resize kildebilledet over i det nye billede
ImageCopyResampled($dst_img,$src_img,0,0,0,0,$width,$height,ImageSX($src_img),ImageSY($src_img));

//lav output til mappen /tmp/
ImageJpeg($dst_img, "./upload/thumbnail/" . $nytNavn);
     
//hvis bredden ikke er over 200px
} else {

//åbn kildebilledet og lav output
$src_img=ImageCreateFromJpeg("$image");
ImageJpeg($src_img, $dst);
};

//sæt url'en til billedet
$imgurl = "./upload/thumbnail/" . $nytNavn;
} else {

//foto findes ikke
$foto = 0;
};

//Her ligges oplysningerne ind databasen – huske at connecte til den!
mysql_query($query);
echo "<font size=1 face=arial><b>Billedet blev uploadet<br>Sti: $dst";

}
?>

der bliver både lavet billede og thumbnail, men den funktion kan du jo altid deaktivere ;)
Avatar billede still Nybegynder
31. august 2005 - 10:40 #2
Hej, er meningen at punktumet skal være der i ./upload/ ?
Jeg får også den her fejl:

Warning: copy(./upload/wallpaper--1125477624.jpg): failed to open stream: Permission denied in /home/www/web1/html/test/uploadok.php on line 23
Billedet blev uploadet
Sti: ./upload/wallpaper--1125477624.jpg
Avatar billede dmdisco Nybegynder
31. august 2005 - 10:47 #3
du skal kunne skrive til den mappe så kig lidt på din chmod og ja ./ gør intet det betyder bare at det er denne mappe
Avatar billede still Nybegynder
31. august 2005 - 10:48 #4
Undskyld, det var mig der var for hurtig det var fordi jeg skulle lave mapperne også skulle jeg chmod dem til 777.
Avatar billede still Nybegynder
31. august 2005 - 10:51 #5
Tak for hjælpen, smid et svar og du skal få point...
Lige til sidst hvordan er det nu man oprette forbindelse til mysql?
Avatar billede still Nybegynder
31. august 2005 - 11:40 #6
Forseten, den sti den skriver er lidt ubruglig da, der er dette punktum.
Ved du hvordan jeg får en http:\\www.domain.dk\upload\billede.jpg?
Når man uploade noget som ikke er et jpg billede får man følgende fejl sammentidigt den siger billedet er uploadet. Er det muligt at ændre det:

Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: in /home/www/web1/html/test/uploadok.php on line 61

Warning: imagecreatefromjpeg(): './upload/wallpaper--1125481192.zip' is not a valid JPEG file in /home/www/web1/html/test/uploadok.php on line 61

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/www/web1/html/test/uploadok.php on line 62
Billedet blev uploadet
Sti: ./upload/wallpaper--1125481192.zip
Avatar billede micmicmicmic Nybegynder
31. august 2005 - 12:45 #7
har du lavet en mappe ved navn upload og gevet uploadok.php CHMOD tilladelser?
Avatar billede micmicmicmic Nybegynder
31. august 2005 - 12:46 #8
:P
Avatar billede micmicmicmic Nybegynder
31. august 2005 - 12:48 #9
forresten hvis du skulle være i tvivl ved dmdisco's svar med ./ så betyder det bare at med 1 punktum inden at den tager den mappe hvor uploadok.php ligger, hvis du nu satte 2 punktummer ville den hoppe en mappe tilbage, eks.:
hej/dig/uploadok.php
hvis du så skulle lægge det i en mappe i hej bruger du bare ../ istedet hvis du forstår systemet :)
Avatar billede dmdisco Nybegynder
31. august 2005 - 13:10 #10
lav en funktion der tjekker om fil typen er tilladt i dit script inden den uploader/resizer dit billede
Avatar billede still Nybegynder
31. august 2005 - 13:17 #11
Tak for hjælpen begge, fedt med hurtig respons.
Avatar billede micmicmicmic Nybegynder
31. august 2005 - 13:17 #12
i princippet så kan det egentligt være ligemeget med en sådanne funktion hvis det alligevel kun er ham og hans omgangskreds som han tillader adgang der skal bruge scriptet? jeg mener bare at folk selvfølgelig kun ville bruge .gif eller .jpg formater hvis de skulle uploade billeder, men ellers må du jo bare bruge noget lign. med IF $ext = '.jpg' og så ellers skriv dine ønskede fil-formater ned?
Avatar billede micmicmicmic Nybegynder
31. august 2005 - 13:19 #13
np :)
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