PHP Upload script

Status
Niet open voor verdere reacties.

VDB2012

Nieuwe gebruiker
Lid geworden
9 jun 2012
Berichten
2
Hallo,

Ik heb de onderstaande code gevonden die op zich prima werkt MAARRRR, ik krijg het om de één of andere manier niet voor mekaar om hiermee meerdere bestanden tegelijk te uploaden. Is er iemand met een oplossing?

PHP:
<?php
error_reporting(E_ALL);
/**********************************************************************************
* Multiple files upload at once with a form, 
* optional image resize for jpeg gif and png during upload
* Author: scripts[AT ][ .]titude.nl - NLD - 2007
* For use with resize Requires GD ( 2.0.28 or up for gif support )
 
# example .htaccess
php_value max_execution_time = 3600
php_value max_input_time = 3600
php_value post_max_size 18M
php_value upload_max_filesize 15M
**********************************************************************************/
$m_cnfg['max_size'] = 6144000; // size per file in bytes - 0 is unlimited
$m_cnfg['max_files'] = 0; // max files to upload - 0 is unlimited
$m_cnfg['ext_oke'] = array();  // allowed extensions, empty allow all
// $m_cnfg['ext_oke'] = array('png','jpg','gif','bmp','jpeg','avi','mpg');
$m_cnfg['upload_dir'] = $_SERVER['DOCUMENT_ROOT'] . "/foto/images/"; // upload dir 
$m_cnfg['overwrite'] = false; // allow files overwrite on true
$m_cnfg['newname'] = ""; // file rename "" or "timestamp" or set a rename prefix 
$m_cnfg['inputname'] = "bestanden"; // input file form array name
$m_cnfg['imggd'] = array('jpg'); // resize with GD
$m_cnfg['imgw'] = 0; // max width for resize - 0 is no resize
$m_cnfg['imgh'] = 0; // max height for resize - 0 is no resize
 
$m_log = multiup($m_cnfg);
 
function multiup($m_cnfg) {
    $upmsg = array();
    if ($m_cnfg['max_size'] != 0) {
        $maxdisp = ($m_cnfg['max_size'] >= 6144000) ? round($m_cnfg['max_size'] / 1024) / 1000 . " Mb" : round($m_cnfg['max_size'] / 10.24) / 100 . " Kb";
        $upmsg['rules'][] = "Maximale bestandsgrootte: " . $maxdisp;
    } 
    if (!empty($m_cnfg['ext_oke'])) {
        $upmsg['rules'][] = "File types: " . implode(" ,", $m_cnfg['ext_oke']);
    }
    if ($m_cnfg['max_files'] != 0) {
        // $upmsg['rules'][] = "Simultanious: " . $m_cnfg['max_files'];
    }
    if ($_SERVER["REQUEST_METHOD"] == 'POST' && !empty($_FILES[$m_cnfg['inputname']]['name'])) {
        if (is_writable($m_cnfg['upload_dir'])) {
            $filedir = str_replace("//", "/", $m_cnfg['upload_dir'] .  "/");
            $gdtrue = extension_loaded('gd') ? true : false;
            $gd201 = function_exists('imagecopyresampled') ? true : false;
            $gd2082 = $gd201 && function_exists('imagecreatefromgif') ? true : false;
            $maxup = 1;
            while(list($filenum, $filename) = each($_FILES[$m_cnfg['inputname']]['name'])) { 
                $uptrue = false;
                if (!empty($filename)) {
                    $fileparts = pathinfo($filename);
                    $fileext = strtolower($fileparts['extension']);
                    // filter filename - adjust to needs - replace spaces by
                    // _ a-z A-Z - 0-9 _ . allowed - extension length 2-5 chars
                    $filename = str_replace("%20", "_",  str_replace(" ", "_",  $filename));
                    $uptrue = preg_match("/^[-a-z0-9_\.]+\.[a-z0-9]{2,5}$/i",  $filename) ? true : false;
                    $uptrue = $uptrue && $m_cnfg['max_files'] != 0 && $m_cnfg['max_files'] < $maxup ? false : true; 
                    $uptrue = $uptrue && (($fileext != "" && in_array($fileext, $m_cnfg['ext_oke'])) || empty($m_cnfg['ext_oke'])) ? true : false;
                    $uptrue = $uptrue && ($_FILES['bestanden']['size'][$filenum] < $m_cnfg['max_size'] || $m_cnfg['max_size'] == 0) ? true : false;
                    if (!$uptrue) {
                        $upmsg['errors'][] = $filename;
                    }
                }
                if ($uptrue) {
                    $maxup++;
                    $newname = "";
                    if ($m_cnfg['overwrite'] !== true || $m_cnfg['newname'] != "") { 
                        $tmpname = $m_cnfg['newname'] != "" ? $m_cnfg['newname'] : str_replace ("." . $fileext, "", $filename); 
                        if ($m_cnfg['newname'] == "timestamp") {
                            list($usec) = explode(" ", microtime());
                            $tmpname = date('YmdHis') . (string)substr($usec,2,6);
                        }
                        $fileloc = $filedir . $tmpname . "." . $fileext;
                        $newname = $tmpname . "." . $fileext;
                        $a = 1;
                        if ($m_cnfg['overwrite'] !== true) {
                            while (file_exists($fileloc)) { 
                                $a++; 
                                $fileloc = $filedir . $tmpname . "_" . $a . "." . $fileext; 
                                $newname = $tmpname . "_" . $a . "." . $fileext;
                            }
                        } 
                    } else {
                        $fileloc = $filedir . $filename; 
                    }
                    if (move_uploaded_file($_FILES[$m_cnfg['inputname']]['tmp_name'][$filenum], $fileloc)) {
                        if ($newname == $filename || $newname == "") {
                            $upmsg['uploads'][] = $filename;
                        } else {
                            $upmsg['uploads'][] = $filename . " as " . $newname;
                        }
                        if ($gdtrue && in_array($fileext, $m_cnfg['imggd']) && $m_cnfg['imgw'] > 0 && $m_cnfg['imgh'] > 0) {
                            list($curw, $curh) = getimagesize($fileloc);    
                            $p_x = $curw / $m_cnfg['imgw'];
                            $p_y = $curh / $m_cnfg['imgh'];
                            if ($p_x > 1 || $p_y > 1) {
                                $pfactor = ($p_x > $p_y) ? $pfactor = $p_x : $pfactor = $p_y;
                                $neww = round($curw / $pfactor);
                                $newh = round($curh / $pfactor);
                                $imgorg = false;
                                if ($fileext == "jpg" || $fileext =='jpeg') { 
                                    $imgorg = imagecreatefromjpeg($fileloc);
                                } else if ($gd2082 && $fileext == "gif") {  
                                    $imgorg = imagecreatefromgif($fileloc);
                                } else if ($fileext == 'png') {
                                    $imgorg = imagecreatefrompng($fileloc);
                                }
                                if ($imgorg) {
                                    if ($gd201) {
                                        $imgnew = imagecreatetruecolor($neww, $newh);
                                        if ($fileext == "gif" || $fileext == "png") {
                                            $bgcolor = imagecolorallocate($imgorg, 0, 0, 0);
                                            imagepalettecopy($imgnew, $imgorg);
                                            imagefill($imgnew, 0, 0, $bgcolor);
                                            imagecolortransparent($imgnew, $bgcolor);
                                        }
                                        imagecopyresampled($imgnew, $imgorg, 0, 0, 0, 0, $neww, $newh, $curw, $curh);
                                    } else {
                                        $imgnew = imagecreate($neww, $newh);
                                        imagecopy($imgnew, $imgorg, 0, 0, 0, 0, $neww, $newh, $curw, $curh);
                                    }
                                    imagedestroy($imgorg);
                                    if ($fileext == 'jpg' || $fileext =='jpeg') { 
                                        imagejpeg($imgnew, $fileloc, 80);
                                    } else if ($gd2082 && $fileext == 'gif') {  
                                        imagegif($imgnew, $fileloc);
                                    } else if ($fileext == 'png') {
                                        imagepng($imgnew, $fileloc);
                                    }
                                    imagedestroy($imgnew);
                                    list($neww, $newh) = getimagesize($fileloc);
                                    array_pop($upmsg['uploads']);
                                    if ($newname == $filename || $newname == "") {
                                        $upmsg['uploads'][] = $filename . " - size: " . $neww . "px - " . $newh . "px";
                                    } else {
                                        $upmsg['uploads'][] = $filename . " as " . $newname . " - New Size: " . $neww . "px - " . $newh . "px";
                                    }
                                }
                            }
                        }
                    } 
                } 
                if (file_exists($_FILES[$m_cnfg['inputname']]['tmp_name'][$filenum])) {
                    unlink($_FILES[$m_cnfg['inputname']]['tmp_name'][$filenum]);
                }
            }
        } else {
            $upmsg['errors'][] = "Dir error: " . $m_cnfg['upload_dir'];
        }
    }
    return $upmsg;
}
?>
<html>
<head>
<title>Upload-multi</title>
<style>
body {
    font-family: arial;
    font-size: 16px;
	color: #ffffff;
    margin-left: 50px;
    margin-top: 50px;
	background-color: transparent;
}
</style>
</head>
<body>
<script type="text/javascript">
<!--
// specify max_files to upload when used apart from upload multi
// 0 = unlimited - adjust in your config also
var max_files = <?php echo $m_cnfg['max_files']; ?>;
var count_files = 0;
function bestanden() { 
    if (max_files == 0 || max_files > count_files) {
        var holder = document.getElementById('bestanden').getElementsByTagName('tr')[0].parentNode; 
        var taginp = document.createElement('input'); 
        taginp.setAttribute('type','file');
        taginp.setAttribute('name','bestanden[]'); 
        var tagtr = document.createElement('tr');
        var tagtd = document.createElement('td');
        var tagspan = document.createElement('span');
        tagspan.style.cursor = 'pointer'; 
        tagspan.onclick = function() { 
            this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);  
            count_files--;      
        } 
        tagspan.appendChild(document.createTextNode(' Delete')); 
        tagtd.appendChild(taginp);
        tagtd.appendChild(tagspan);
        tagtr.appendChild(tagtd);
        holder.appendChild(tagtr); 
        count_files++;
    } 
}
//--></script> 
<form method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" enctype="multipart/form-data">
<table id="bestanden"> 
<tr><td><input type="file" name="bestanden[]"> <span onClick="bestanden()" style="cursor:pointer;">Toevoegen</span></td></tr>  
</table> 
<input type="submit" value="Upload">
</form>
<?php 
if (!empty($m_log['rules'])) {
    echo "<b>Let op!</b>  <br />";
    echo implode("<br />", $m_log['rules']);
}
if (!empty($m_log['uploads'])) {
    echo "<br /><br /><b>Uploaded</b>  <br />";
    echo implode("<br />", $m_log['uploads']);
}
if (!empty($m_log['errors'])) {
    echo "<br /><br /><b>Upload failed for</b> <br />";
    echo implode("<br />", $m_log['errors']);
}
?>
</body>
</html>

[EDIT 16:09uur] Ik ben er inmiddels achter dat als je op "toevoegen" klikt je een nieuwe input regel krijgt dus het werkt wel degelijk correct. Maar toch zou het ook mogelijk moeten zijn om meerdere bestanden ineens te selecteren wanneer je "verkenner" scherm opent, toch?
 
Laatst bewerkt:
Dank je wel :)

Ziet er goed uit alleen ik kan de bestanden niet terugvinden op de server. Waarschijnlijk een beveiliging of zoiets dus dat word morgen bellen met de webhost.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan