Her er en funktion der uploader filer:
<?php
function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
if ($bibliotek == 'default') {
$bibliotek = '/upload';
}
if ($filtyper_tilladt == 'default') {
$filtyper_tilladt = array('image/bmp', 'image/jpeg', 'image/pjpeg', 'image/tiff', 'image/png', 'image/gif', 'application/pdf', 'application/zip', 'application/arj', 'application/x-zip-compressed', 'application/octet-stream');
}
if ($fil['size'] > 0) {
$filnavn = strtolower(ereg_replace(' ', '_', $fil['name']));
$fil_sti = $bibliotek . '/' . $filnavn;
$fra = $fil['tmp_name'];
$fil_stoerrelse = filesize($fra)/1024;
$filtype = $fil['type'];
$fejl = 0;
if (!in_array($filtype, $filtyper_tilladt)) {
echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
$fejl = 1;
}
if ($fil_stoerrelse > $max_stoerrelse) {
echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
$fejl = 1;
}
if ($fejl == 0) {
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
$pos = strrpos($filnavn, '.');
$foerpos = substr($filnavn, 0, $pos);
$efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
$i = 2;
echo "<p>Filen '$filnavn' eksisterer allerede i '$bibliotek' og filen omdøbes derfor til ";
while (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
$filnavn = $foerpos . '(' . $i . ').' . $efterpos;
$fil_sti = $bibliotek . '/' . $filnavn;
$i++;
}
echo "'$filnavn'</p>";
}
$til = $_SERVER['DOCUMENT_ROOT'] . $fil_sti;
if (move_uploaded_file($fra, $til)) {
echo "<p>Filen '$filnavn' er uploadet!</p>";
return $fil_sti;
} else {
echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
return false;
}
}
} else {
echo '<p>Der er ikke vedhæftet nogen fil!</p>';
}
}
// Så bruger du den således
$dinfil = $_FILES['dinfil'];
$max_stoerrelse = 1000; (Eller hvad du synes)
$placering = 'mappen/til/din/fil';
// Du kan også angive et array til tilladte filtyper hvis du vil
// Så mangler vi bare
upload_fil($din_fil, $max_stoerrelse, $placering);
?>
Den sørger også for at filer ikke overskriver hinanden, men omdøbes i stedet.
I enkelte tilfælge virker den ikke pga. $_SERVER['DOCUMENT_ROOT'], så har jeg også en uden.
Jeg har taget udgangspunkt i
http://www.webcafe.dk/artikler/php/upload/, sig til hvis du har problemer :)