Avatar billede qualon Nybegynder
27. november 2003 - 19:24 Der er 1 kommentar

Upload php. Fil typer

Hej...Efter lang tid har jeg nu fået lavet et upload script... Det se sådan her ud:

<form action="upload.php?action=upload" method="post" enctype="multipart/form-data">
  <b>Fil til upload:</b>
  <input type="file" name="upfil" />
  <input type="submit" value="upload" />
</form>
<?
$konfiguration["upload_bibliotek"] = "./updir";
$konfiguration["max_stoerrelse"] = "10";
if($action == "upload") {
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
  die("Desværre - filen er for stor. Jeg accepterer kun " .
      $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
      ceil($fil_stoerrelse, 1) . " kb");
}
if(function_exists("move_uploaded_file")) {
  move_uploaded_file($fra, $til);
echo "File uploaded";
} else {
  copy($fra, $til);
echo "File uploaded";
} }  ?>

Jeg kunne godt tænke mig at gøre sådan at den kun tillader filer der hedder: txt, doc, jpg, gif og de mest brugte.
Og så kunne jeg godt tænke mig en kode der lister alle filerne i updir mappen...
Avatar billede Slettet bruger
27. november 2003 - 19:44 #1
Der er flere måder at tjekke filtypen på. Enten filendelsen, eller filheaderen. Herunder tester jeg på filheaderen.

$tilladte_filer = array(

///zip
//"application/x-tar",
//"application/x-gzip",
//"application/zip",
//"application/x-zip-compressed",
//"application/octet-stream",
//"multipart/x-zip",

///video
//"video/mpeg",
//"video/quicktime",
//"video/x-msvideo",
//"video/quicktime",
//"application/pdf",
//"video/x-ms-asf",
//"video/avi",

///lyd
//"audio/x-wav",
//"audio/basic",
//"audio/x-mpeg",
//"audio/x-midi",

///dokumenter
//"application/msword",
//"application/vnd.ms-excel",
//"application/vnd.ms-powerpoint",
//"application/rtf",
//"text/plain",
//"text/html",

///billeder
"image/jpeg",
"image/pjpeg",
"image/jpg",
"image/gif",
"image/png",
"image/x-png",
//"image/tiff"
); //tilladte filtyper.

if(!in_array($_FILES["upfil"]["type"],$tilladte_filer)) {
echo "fy bab bab kun filer af typen osv osv...";
}




En måde at vise filerne på er den her som du selv kan tilpasse dit brug:




function convert($convertTo, $b, $dec) {

if($b < 1024) {
if(substr($b, 0, -1) > 1) {
$ekstra = "s";
}
return $b . " byte" . $ekstra;
}

if($b > 1024) {
$endelse = " kilobyte";
$convertTo = 1;
}

if($b > 1024 * 1024) {
$endelse = " megabyte";
$convertTo = 2;
}

if($b > 1024 * 1024 * 1024) {
$endelse = " gigabyte";
$convertTo = 3;
}

if($b > 1024 * 1024 * 1024 * 1024) {
$endelse = " terabyte";
$convertTo = 4;
}

// antal decimaler efter komma
$dec = 1;

$expression = pow(1024, $convertTo);
$b = number_format($b / ($expression), $dec);
if(substr($b, 0, -1) > 1) {
$ekstra = "s";
}
return $b . $endelse . $ekstra;
}

function get_file_type($filename) {
ereg( ".*\.([a-zA-z0-9]{0,5})$", $filename, $regs );
$f_ext = $regs[1];

$types['Billede'] = array ('jpeg', 'jpg', 'gif','png');
$types['Tekst'] = array ('html', 'htm', 'text', 'txt', 'doc', 'ini', 'csv', 'pdf');
$types['Musik'] = array ('wma', 'mp3', 'mpeg3');
$types['Pakket fil'] = array ('zip', 'tar', 'rar','pak', 'gz');
$types['Filmklip'] = array ('wmv', 'mov', 'avi', 'rv', 'mpg', 'mpeg');
$types['Program'] = array ('exe');
foreach ($types as $k => $v) {
if (in_array($f_ext, $v)) {
return $k . " (." . $f_ext . ") ";
break;
}
}
return "Ukendt (." . $f_ext . ") ";
}

# Indstillinger
$mappe = "../../groenbech/usr_files";
$pr_side = 5; // Antallet af filer pr. side

if($_GET['slet'] == 'ok') {
if(file_exists($mappe . "/" . $_GET['filename'])) {
if(unlink($mappe . "/" . $_GET['filename']) == TRUE) {
$tak = "Filen <b>$_GET[filename]</b> er nu slettet<br><br>";
} else {
$fejl = "Filen <b>$_GET[filename]</b> eksisterer ikke eller er allerede slettet<br><br>";
}
}
}

if (!isset($_GET['offset'])) {
$offset = 0;
} else {
$offset = $_GET['offset'];
}

$pics = $offset+$pr_side;
$i = $offset;

# Laver et array med filerne
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
    if (($fil != "." && $fil != "..") && substr($fil,-3) != "php") {
    $filer[] = $fil;
    $location = "$mappe/$fil";
    }
}

closedir($handle);

# Udskriver filerne

if(!count($filer)) {
$fejl = "Der er ingen filer i denne mappe<br>";
}

?>
<br>
<div style="padding-left:10px;color:green">
<?
echo $tak;
?>
</div>
<div style="padding-left:10px;color:#FF0000">
<?
echo $fejl;
?>
</div>
<?

if(count($filer)) {
function cmp ($a, $b) {
$a = strtolower($a);
$b = strtolower($b);
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}

usort($filer, "cmp");
while($i < $pics && $filer[$i] != "") {
$fil_info = stat($mappe . "/" . $filer[$i]);
echo "<table width=\"100%\" style=\"border:1px solid #CACACA\" cellspacing=\"2\" cellpadding=\"0\" border=\"0\"><tr><td style=\"padding-left:8px\" width=\"100%\"><a target=\"_blank\" href=\"$mappe/$filer[$i]\">$filer[$i]</a></td>";
    echo "<td width=\"290\" nowrap valign=\"top\"><b>Filnavn:</b> $filer[$i]<br><b>Type:</b> " . get_file_type($filer[$i]) . "<br><b>Størrelse:</b> " . (convert($convertTo, $fil_info[7], $dec)) . "<br><b>Uploadet:</b> ";
echo date("d-m-Y \k\l\. H:i:s", $fil_info[9]);
echo "<br><br><input type=\"button\" onclick=\"decision('Slet fil?','admin.php?valg=filer&valg2=seslet&filename=$filer[$i]&slet=ok','')\" value=\"Slet fil\">";
echo "</td></tr></table><br>";
$i++;
}
}

#Udskriver links
?>

<table width="100%" border="0"><tr><td width="50%">
<?
if ($offset >= $pr_side) {
    $forrige = $offset - $pr_side;
    echo "<input onclick=\"location.href='admin.php?valg=filer&valg2=seslet&offset=$forrige'\" type=\"button\" value=\"&laquo;&nbsp;Forrige\">";
}
?>
</td><td width="50%" align="right">
<?
if (count($filer) > $offset + $pr_side) {
    $naeste = $offset + $pr_side;
    echo "<input onclick=\"location.href='admin.php?valg=filer&valg2=seslet&offset=$naeste'\" type=\"button\" value=\"Næste&nbsp;&raquo;\">";
}
?>
</td></tr></table>
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
Alle kurser indenfor Microsoft 365 – både til begyndere og øvede.

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