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...
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=\"« 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 »\">";
}
?>
</td></tr></table>