Du kan prøve dette
<?php
// SETTINGS ///////////////////////////////////////////////////////////////////////////////////////
// Definerer stien til uploaddir
$dist = $_SERVER["DOCUMENT_ROOT"] ."/upload/";
// bruges til at linke til uploadet fil. Her ligger dir i roden af domain
// Hvis $up_link er tom, laves der ikke noget link til fil efter upload
$up_link = "/upload/";
// Navn og sti til denne fil. Bruges til redirect efter upload og som action i formularen
// Her ligger filen i roden af domain
$file_name = "/multi_upload.php";
// Skal der kun uploades billeder? true/false
$only_images = false;
// tilladte filtyper, bruges hvis $only_images = true
// arrayet er sammensat ud fra hvad getimagesize() returnerer
// ønskes f.eks. swf og wbmp filer tilføjet, skal 4 => "swf" og 15 => "wbmp" med i array'et $filtyper
// Array'et bruges også til navngivning af filen
// Og array'et bruges også i javascript til preview filen ( Kun IE )
$filtyper = array(1 => "gif", 2 => "jpg", 3 => "png");
// max kb pr. fil ved upload, hvis sat til 0 er der ingen begrænsning
// Husk serveropsætning også sætter begrænsninger. Normalt 2 Mb for upload og 8Mb for post
$max_kb = 0;
// Default antal viste uploadfelter
$default_fields = 5;
// Med $_FILES["upfile"]["type"] kan man få hvilken mimetype uploadet fil er.
// Men den er IKKE 100% sikker, ( browserbestemt ), så derfor bruges det ikke i dette script
// Derimod tjekkes på filendelsen, hvilke filtyper som kan uploades
// Hvis arrayet herunder er tomt, ( eller udkommenteres ), uploades alle typer ( medmindre selvf. $only_images er sat til true )
// HUSK at kun bruge små bogstaver, da filnavnet bliver til lowercase ved upload
$upload_types = array("gif", "jpg", "jpeg", "png", "pdf", "txt", "html", "htm", "doc");
// END SETTINGS ///////////////////////////////////////////////////////////////////////////////////
//// HERFRA OG NED BEHØVER DU IKKE ÆNDRE ////
// Tjekker diverse... ///////////////////////////////////////
$ver = phpversion();
// Ok version af PHP ???
if($ver < 4.2) {
echo "Scriptet kan kun bruges fra PHP ver. 4.2 og op";
exit;
}
// Er upload tilladt ???
if(false == ini_get('file_uploads')) {
echo "Upload af filer er ikke tilladt i php.ini!";
exit;
}
// Er $file_name defineret korrekt ???
if($_SERVER["PHP_SELF"] != $file_name) {
echo "\$file_name er forkert defineret!";
exit;
}
// Findes dir til upload ???
if(!is_dir($dist)) {
echo "Dir til upload findes ikke!";
exit;
}
if(!is_writable($dist)) {
echo "Der er ikke skriverettigheder på uploaddir, ". $dist;
exit;
}
// End tjek diverse... //////////////////////////////////////
// Fjerner "bad" tegn i filnavn ved upload
function up_file_name($var) {
$badchars = "\"'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\$/\\";
$var = strtolower($var);
for($i = 0; $i < strlen($badchars); $i++) {
$var = str_replace($badchars[$i], "", $var);
}
$replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", " " => "_");
foreach($replace as $key => $value) {
$var = str_replace($key, $value, $var);
}
return $var;
}
// starter session hvis ikke startet. Bruges til at vise besked efter upload
if(!session_id()) {
session_start();
}
// UPLOAD AF FILER ////////////////////////////////////////
if(isset($_FILES["upfile"]) && is_array($_FILES["upfile"]))
{
foreach($_FILES["upfile"]["error"] as $key => $error)
{
if($error == UPLOAD_ERR_OK)
{
$tempnavn = $_FILES["upfile"]["tmp_name"][$key];
$filnavn = $_FILES["upfile"]["name"][$key];
$filnavn = up_file_name($filnavn);
if(intval($max_kb) > 0 && filesize($tempnavn) > (intval($max_kb)*1024))
{
$_SESSION["errors"]["toobig"][] = $filnavn;
continue;
}
if($only_images != false)
{
if(false == ($str = getimagesize($tempnavn)))
{
$_SESSION["errors"]["no_img"][] = $filnavn;
continue;
}
$typen = $str[2];
if(!isset($filtyper[$typen]))
{
$_SESSION["errors"]["type"][] = $filnavn;
continue;
}
$filnavn = basename($filnavn, $filtyper[$typen]);
if(substr($filnavn, -1) != ".")
{
$filnavn = $filnavn .".";
}
$filnavn = $filnavn . $filtyper[$typen];
}else{
if(isset($upload_types) && is_array($upload_types) && count($upload_types) > 0)
{
$file_info = pathinfo($filnavn);
$file_type = $file_info["extension"];
if(!in_array($file_type, $upload_types))
{
$_SESSION["errors"]["type"][] = $filnavn;
continue;
}
}
}
move_uploaded_file($tempnavn, $dist . $filnavn);
chmod($dist . $filnavn, 0644);
$_SESSION["files"][] = $filnavn;
}
else
{
if($error == 4) // Hvis der ingen fil er
{
continue;
}
$_SESSION["errors"]["upload"][$error][] = $_FILES["upfile"]["name"][$key];
}
}
header("Location:
http://". $_SERVER["HTTP_HOST"] . $file_name);
exit;
}
// END UPLOAD AF FILER ////////////////////////////////////
// EVT. TEKST SOM VISES UNDER SUBMITKNAPPEN //////////////////////////
$textstring = "";
// Hvis kun billeder
$textstring .= ($only_images != false ? "\r\nKun billeder af typen ". implode(", ", $filtyper) ." uploades" : "");
// Viser evt. filtyper som kan uploades, hvis $only_images er false
if(empty($textstring) && isset($upload_types) && is_array($upload_types) && count($upload_types) > 0)
{
$textstring .= "\r\nKun filer med filendelsen ". implode(", ", $upload_types) ." kan uploades";
}
// Hvis $max_kb er defineret
$textstring .= (intval($max_kb) > 0 ? "\r\nHver fil må højst fylde ". intval($max_kb) ."Kb." : "");
// END EVT. TEKST SOM VISES UNDER SUBMITKNAPPEN /////////////////////
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Upload af filer</title>
<script type="text/javascript">
function div_text($antal) {
if(er_et_tal($antal) != false && $antal > 0) {
var ialt = 0;
var str = '';
while(ialt < $antal) {
str = str+'<br />\n<input type="file" name="upfile[]" size="32" onchange="vis_img(this.value);">';
ialt++;
}
<!-- script som IKKE bruger innerHTML vil være det bedste -->
var file_ref = document.getElementById('uploadfelter');
file_ref.innerHTML = str;
}
}
function er_et_tal() {
var reg = /^[\d]+$/;
var navn = document.forms['do_upload'].elements['antal'];
if(navn.value !='' && !navn.value.match(reg)){
alert("Kun tal kan indtastes i feltet!");
navn.value = '';
return false;
}
}
function vis_img(path) {
var ua = navigator.userAgent.toLowerCase();
var msie = ua.indexOf('msie');
var ope = ua.indexOf('opera');
if (msie > -1 && ope < 1) {
var filnavn = new String(path);
filnavn = path.substring(path.lastIndexOf('\\')+1,path.length);
filtypen = filnavn.substring(filnavn.lastIndexOf('.')+1,filnavn.length);
filtypen = filtypen.toLowerCase();
<?php
if(isset($filtyper[4])) {
unset($filtyper[4]);
}
if(isset($filtyper[2])) {
$filtyper[] = "jpeg";
}
$js_str = implode("\",\"", $filtyper);
?>
var img_reg = /^["<?php echo $js_str; ?>"]+$/;
var vis_img = document.getElementById("img_pre");
if(filtypen.match(img_reg)) {
vis_img.getElementsByTagName("b")[0].firstChild.nodeValue = filnavn;
vis_img.getElementsByTagName("img")[0].setAttribute("src", path);
vis_img.style.display = "block";
}else{
vis_img.style.display = "none";
}
}
}
</script>
</head>
<body>
<form name="do_upload" enctype="multipart/form-data" action="<?php echo $file_name; ?>" method="post">
Max. upload på en gang: <b><?php echo min(ini_get("post_max_size"), ini_get("upload_max_filesize")); ?>b.!</b><br />
Antal felter: <input type="text" name="antal" onfocus="select();" onkeyup="er_et_tal();" size="2">
<input type="button" value="Vis felter" onclick="div_text(this.form.antal.value);vis_img('empty');" onkeydown="div_text(this.form.antal.value);vis_img('empty');">
<div id="uploadfelter">
<script type="text/javascript">
div_text(<?php echo intval($default_fields); ?>);
</script>
</div>
<br />
<input type="submit" value="Upload">
<?php echo nl2br(htmlentities($textstring)); ?>
</form>
<div id="img_pre" style="display: none;">Imagepreview af filen <b> </b><br /><img src="" width="200"></div>
<?php
// VIS EVT. BESKEDER EFTER FIL UPLOAD
if(isset($_SESSION["files"])) {
echo "Fil". (count($_SESSION["files"]) > 1 ? "er" : "")." som er blevet uploadet:<br />\r\n";
foreach($_SESSION["files"] as $fil)
{
echo"<b>". $fil ."</b>";
if(!empty($up_link))
{
echo" <a href=\"". $up_link . $fil ."\" target=\"_BLANK\">Vis fil</a>";
}
echo "<br />\r\n";
}
unset($_SESSION["files"]);
}
if(isset($_SESSION["errors"])) {
$error_msg = array("toobig" => "Valgte fil er større end tilladt, ( ". intval($max_kb) ." Kb. )",
"no_img" => "Valgte fil er ikke et billede",
"type" => "Filtypen er ikke tilladt for upload",
"upload" => array(1 => "Filen er større end tilladt i php.ini, ( upload_max_filesize )",
2 => "Filen er større end tilladt hvad MAX_FILE_SIZE er defineret til i formularen",
3 => "Kun en del af filen blev uploadet",
6 => "Upload tmpdir findes ikke",
7 => "Fejl ved skrivning af fil til disk"));
$err = array_keys($_SESSION["errors"]);
foreach($err as $mess)
{
if(!isset($error_msg[$mess]))
{
continue;
}
echo"<p>\r\n";
$text = $error_msg[$mess];
if(!is_array($text))
{
echo htmlentities($text) ."<br />\r\n";
echo"<b>". implode("<br />\r\n", $_SESSION["errors"][$mess]) ."</b><br />\r\n";
}
else
{
foreach($_SESSION["errors"][$mess] as $key => $fejl) {
if(isset($text[$key]))
{
echo"<br />\r\n". htmlentities($text[$key]);
echo"<br />\r\n<b>". implode("<br />\r\n", $fejl) ."</b>";
}
}
}
echo"</p>\r\n";
}
unset($_SESSION["errors"]);
}
?>
</body></html>