Avatar billede jesperkm Nybegynder
03. maj 2005 - 23:00 Der er 20 kommentarer

PHP upload

Hej.
Jeg søger et simpelt script hvor en bruger på mit community kan tilføje et billede til sin profil.

Billedet må ikke være større end 200x200 og fylde over 150 kb.

Billedet skal ligges i mappen galleri/

Billedet skal hedde brugernavnet_profil
fx. jesperKM_profil

man skal kun kunne uploade .bmp, .gif, .jpg, .jpeg!

- På forhånd tak!
Avatar billede Slettet bruger
04. maj 2005 - 00:02 #1
Jeg har en artikel hvor du kan gøre dette:
http://www.eksperten.dk/artikler/266

.. og du kan få et billeds størrelser vha:
http://dk.php.net/manual/en/function.getimagesize.php

--
pacroon
Avatar billede bobslaede Nybegynder
04. maj 2005 - 00:32 #2
Du kan bruge javascript til at finde størelsen på billedet inden det bliver uploadet.
Avatar billede bobslaede Nybegynder
04. maj 2005 - 00:32 #3
altså bredde og højde...
Avatar billede net-city Nybegynder
04. maj 2005 - 00:41 #4
Dette virker da ikke?


<?php
//upload.php
function upload_form() {
global $PHP_SELF;
?>
<html>
<head><title>File upload</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>
<body>
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>">
<input type="hidden" name="action" value="upload">
Upload file!
<input type="file" name="userfile">
<input type="submit" name="submit" value="Upload">
</form>
<?php
}

function upload_file() {
global $userfile, $userfile_name, $userfile_size, $userfile_type, $archive_dir, $max_filesize, $WINDIR;

$archive_dir="/galleri/";

if(isset($WINDIR)) { $userfile = str_replace("\\\\","\\", $userfile); }

$filename = basename($userfile_name);
$max_filesize = 20000;

if($userfile_size <= 0) die ("$filename is empty");
if($userfile_size > $max_filesize) die ("$filename is too big! Only $max_filesize bytes allowed!");
if(!@copy($userfile, "$archive_dir/$filename")) die ("Can't copy $userfile_name to $filename.");
if(isset($WINDIR) && !@unlink($userfile)) die ("Can't delete the file $userfile_name.");

echo "<img src=\"$filename\"><br>";
echo "$filename has been successfully uploaded.<br>";
echo "Filesize: " . number_format($userfile_size) . "<br>";
echo "Filetype: $userfile_type<br>";
}
?>
<?php
if($action == 'upload') {
upload_file();
} else {
upload_form();
}
?>
Avatar billede net-city Nybegynder
04. maj 2005 - 00:42 #5
Har da testet det? Og det jo ikke særligt bruger venligt at sige til folk at det virker, mens det ikke gør.

Er skam ikke ret inponeret.

// Net-city
Avatar billede jesperkm Nybegynder
04. maj 2005 - 00:45 #6
eeh slap dog lige af?

Pacroon har lavet en flot artikel, men virker dog ikke tip top hos mig.
Avatar billede Slettet bruger
04. maj 2005 - 02:23 #7
net city > Jeg ved ikke hvad du gør, men jeg kan godt forsikre dig om at det virker :)
Avatar billede Slettet bruger
04. maj 2005 - 02:40 #8
Det her er en farce, jeg vil i stilhed forlade dette spørgsmål.

Det er ikke tilladt at have flere brugere på eksperten.

Jeg vil henlede din opmærksomhed på ekspertens regler, stk 2:

"# Det er kun tilladt at have én brugerprofil på Eksperten.dk, med mindre andet er aftalt med Admin eller CoAdmins.

  1. Hvis man af den ene eller anden årsag ønsker at skifte brugernavn, skal dette ske ved først at lukke sin eksisterende bruger for derefter at oprette en ny bruger. Det er under ingen omstændigheder tilladt at overføre pointene fra den gamle bruger til den nye bruger. NB: Eksperten Pro-brugere kan under Konto -> Indstillinger skifte brugernavn og behøver derfor ikke at gøre som beskrevet ovenfor."

--
pacroon
Avatar billede baitianlong Nybegynder
04. maj 2005 - 03:01 #9
<?php
function upload_form() {
?>
<html>
<head><title>File upload</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>
<body>
<form method="post" enctype="multipart/form-data" action="<?= $_SERVER['PHP_SELF'] ?>">
<input type="hidden" name="action" value="upload">
Upload file!
<input type="file" name="userfile">
<input type="submit" name="submit" value="Upload">
</form>
<?php
}

function upload_file() {
$userfile = $_FILES['userfile']['tmp_name'];
$userfile_name = $_FILES['userfile']['name'];
$userfile_size = $_FILES['userfile']['size'];
$userfile_type = $_FILES['userfile']['type'];
$userfile_dim = getimagesize($_FILES['userfile']['tmp_name']);

$archive_dir=$_SERVER['DOCUMENT_ROOT']."/galleri";

$filename = basename($userfile_name);
$max_filesize = 50000;

if($userfile_dim[0] > 200 || $userfile_dim[1] > 200) die("Image over 200x200 px!");
if($userfile_size <= 0) die ("$filename is empty");
if($userfile_size > $max_filesize) die ("$filename is too big! Only $max_filesize bytes allowed!");
if(!move_uploaded_file($userfile, "$archive_dir/$filename")) die ("Can't copy $userfile_name to $filename.");

echo "<img src=\"galleri/$filename\"><br>";
echo "$filename has been successfully uploaded.<br>";
echo "Filesize: " . number_format($userfile_size) . "<br>";
echo "Filetype: $userfile_type<br>";
}
?>
<?php
if($_POST['action'] == 'upload') {
upload_file();
} else {
upload_form();
}
?>
Avatar billede jesperkm Nybegynder
04. maj 2005 - 14:08 #10
2 brugere? - Jeg har dog kun én ;)
Avatar billede jesperkm Nybegynder
04. maj 2005 - 15:40 #11
Hos mig:
Can't copy 20.gif to 20.gif.
Avatar billede baitianlong Nybegynder
04. maj 2005 - 15:50 #12
Med "mit" rettede script ?
Avatar billede baitianlong Nybegynder
04. maj 2005 - 15:51 #13
Der må være mere fejl end det.
Avatar billede jesperkm Nybegynder
04. maj 2005 - 16:07 #14
Se her, har lavet dette indtil videre, men uploade med navnet .gif uden noget foran, bare .gif, også bliver billedet sort? - Hvorfor:
<-- kode -->


<?php
$extlimit = "ja";
$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp");
$sizelimit = "nej";
$sizebytes = "15000";
$absolute_path = $sti."upload";


if($submit=="Upload"){
  $dir = "dir";
if ($file != "") {
  $ext=strrchr($file_name,'.');
  $ext=strtolower($ext);

if (file_exists($absolute_path."/".$id."".$ext)) {
  die("Billedet eksisterer allerede");
}

if (($sizelimit == "ja") && ($file_size > $sizebytes)) {
  die("Billedet er for stort. Det må højest fylde 15 kb.");
}


if (($extlimit == "ja") && (!in_array($ext,$limitedext))) {
  die("Filen er en forkert filtype.");
}

@copy($file, $absolute_path."/".$id."".$ext) or die("Filen kunne ikke kopieres til serveren ".$absolute_path."/".$id."".$ext);

    #-+ Read the source image
    $src_img = ImageCreateFromJPEG($absolute_path."/".$id."".$ext);

    #Vælg bredden
    $tn_w = "160";

    #Hent billedets bredde og højde
    $imginfo = getimagesize($absolute_path."/".$id."".$ext);
    $org_w= $imginfo[0];
    $org_h = $imginfo[1];

    #Beregn højden i forhold til bredden
    $tn_h = floor($tn_w * $org_h / $org_w);
           
    #Sæt det nye billede
    $dst_img = imagecreatetruecolor($tn_w,$tn_h);
       
    #Ændre det!
    ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, $tn_w, $tn_h, $org_w, $org_h);
               
    #Gem det!
ImageJPEG($dst_img, $absolute_path."/".$id."".$ext, "95");
   
    #slet "midlertidige" filer fra serveren.
    imagedestroy($dst_img);
} else {
  die("Husk at vælge et Billede");
}
echo "<p />";
echo $file_name." blev uploaded";
mysql_query("UPDATE users SET billede='".$id."".$ext."' WHERE id='$id'");
}
?>


<form method=POST action="?ske=minside&adr=upload" enctype=multipart/form-data>
<p>Vælg et Billed:<br>
<input type=file name=file size=30>
<p><button name=submit type=submit value=Upload>
Upload
</button>
</form>
-----Mappen med uploadet filer hedder "upload" ----
Avatar billede jesperkm Nybegynder
04. maj 2005 - 16:10 #15
doh, sorry. min fejl.

nu siger den:


vis_profil.gif has been successfully uploaded.
Filesize: 2,392
Filetype: image/gif


men intet er i mappen
Avatar billede baitianlong Nybegynder
04. maj 2005 - 16:14 #16
Well. Dine variabler er ikke defineret nogle steder, så jeg er forundret over at der overhovedet sker noget. Det rettede script jeg skrev her i går er testet og virker fint. Filen skal bare ligge i Document_root og det samme med mappen "galleri".
Avatar billede jesperkm Nybegynder
04. maj 2005 - 16:16 #17
filen upload.php ligger i hovedesiden.
mappen galleri ligger samme sted.

galleri er sat til chmod 777.

filen ser således ud:

<?php
function upload_form() {
?>
<html>
<head><title>File upload</title>

</head>
<body>
<form method="post" enctype="multipart/form-data" action="<?= $_SERVER['PHP_SELF'] ?>">
<input type="hidden" name="action" value="upload">
Upload file!
<input type="file" name="userfile">
<input type="submit" name="submit" value="Upload">
</form>
<?php
}

function upload_file() {
$userfile = $_FILES['userfile']['tmp_name'];
$userfile_name = $_FILES['userfile']['name'];
$userfile_size = $_FILES['userfile']['size'];
$userfile_type = $_FILES['userfile']['type'];
$userfile_dim = getimagesize($_FILES['userfile']['tmp_name']);

$archive_dir=$_SERVER['DOCUMENT_ROOT']."/upload/";

$filename = basename($userfile_name);
$max_filesize = 50000;

if($userfile_dim[0] > 200 || $userfile_dim[1] > 200) die("Image over 200x200 px!");
if($userfile_size <= 0) die ("$filename is empty");
if($userfile_size > $max_filesize) die ("$filename is too big! Only $max_filesize bytes allowed!");
if(!move_uploaded_file($userfile, "$archive_dir/$filename")) die ("Can't copy $userfile_name to $filename.");

echo "<img src=\"upload/$filename\"><br>";
echo "$filename has been successfully uploaded.<br>";
echo "Filesize: " . number_format($userfile_size) . "<br>";
echo "Filetype: $userfile_type<br>";
}
?>
<?php
if($_POST['action'] == 'upload') {
upload_file();
} else {
upload_form();
}
?>
Avatar billede baitianlong Nybegynder
04. maj 2005 - 16:22 #18
Ja, det er jo mit script fra i går, bortset fra at du har ændret mappenavnet til upload. Så derfor er det egentlig ligemeget hvor/om mappen galleri ligger, men mere væsentligt at der er en mappe der hedder upload
Avatar billede jesperkm Nybegynder
04. maj 2005 - 16:24 #19
mener mappen "galleri" er "upload" nu, men hvorfor virker det ikke?
Avatar billede baitianlong Nybegynder
04. maj 2005 - 22:17 #20
hvis der ikke er en mappe, der hedder upload virker det ikke derfor. Ellers må du sige hvilke fejl du får
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