GooGooJansen
Gebruiker
- Lid geworden
- 16 jul 2006
- Berichten
- 513
Hallo,
Ik heb een PHP Upload Script gevonden, werkt goed. Maar... deze doet als er al een bestand is dat bestand overschrijven, dit wil ik niet. Ik wil dat die er dan wat achter zet, maakt niet uit wat. Bijvoorbeeld: bestand2akdsajflkhsnkajbf.jpg omdat het bestand bestand.jpg al bestaat. Hoe doe ik dit?
GooGooJansen
Ik heb een PHP Upload Script gevonden, werkt goed. Maar... deze doet als er al een bestand is dat bestand overschrijven, dit wil ik niet. Ik wil dat die er dan wat achter zet, maakt niet uit wat. Bijvoorbeeld: bestand2akdsajflkhsnkajbf.jpg omdat het bestand bestand.jpg al bestaat. Hoe doe ik dit?
GooGooJansen
PHP:
<?php
error_reporting(E_ALL);
/**********************************************************************************
* Multifile 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'] = 2048000; // size per file in bytes - 0 is unlimited
$m_cnfg['max_files'] = 20; // 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');
$m_cnfg['upload_dir'] = $_SERVER['DOCUMENT_ROOT'] . "/images/stories/slideshow/"; // upload dir
$m_cnfg['overwrite'] = true; // 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'] = 900; // max width for resize - 0 is no resize
$m_cnfg['imgh'] = 290; // 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'] >= 1024000) ? round($m_cnfg['max_size'] / 10240) / 100 . " Mb" : round($m_cnfg['max_size'] / 10.24) / 100 . " Kb";
$upmsg['rules'][] = "Max file size: " . $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: 12px;
margin-left: 50px;
margin-top: 50px;
}
</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 = 1;
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;">Add</span></td></tr>
</table>
<input type="submit" value="Upload">
</form>
<?php
if (!empty($m_log['rules'])) {
echo "<b>Upload rules</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>