Avatar billede playr Nybegynder
12. marts 2007 - 11:31 Der er 2 kommentarer

Upload form - Resize og Kun jpeg/jpg osv.?

Hej, jeg har det her script som jeg gerne vil have lavet ekstra på.

Man kan oploade et billede, men vil gerne have at når billedet bliver uploadet bliver der lagt en kopi i samme mappe der f.eks. hedder "$filename_small" som bliver resizet til # * # px.

Og hvis det ikke er et JPG/GIF billede skal den fortælle at den ikke kan uploade... Nogen der kan hjælpe ??


------------------ upload.php -------------------

<?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 playr Nybegynder
12. marts 2007 - 13:38 #1
Okay det er så fysisk umuligt kan jeg forstå siden ingen af jer eksperter kender svaret? :/
Avatar billede jakobdo Ekspert
12. marts 2007 - 22:04 #2
Test lige denne kode:

<?php

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}


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 = pathinfo($_FILES['userfile']['name'],PATHINFO_EXTENSION);
    $userfile_dim = getimagesize($_FILES['userfile']['tmp_name']);
    $userfile_typer = array('jpg','jpeg');

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

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

    if(!in_array($userfile_type,$userfile_typer))
        die("Image not jpg/jpeg");

    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.");
   
    if(resize($userfile,50,50,"$archive_dir/small_$filename"))
        die ("Can't resize $userfile_name to small_$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 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