【www.gdgbn.com--dedecms教程】
使用方法:
1。先在根目录建立uploadfile目录
2。“值”与“图”:这是用于将此图片传到父窗口的。值,传的是文件名,可用于input;图,传的是图片,用于编辑器。在使用此功能时,先将“值”前面的文本框填写父窗口的ID值。我在用层弹出本程序时可正常赋值。
3。可多个文件上传,如果目标目录有相同的文件,则重命名为“文件名(n).jpg",和FCKeditor一样的命名方式
测试环境:apache2.2.14 + PHP5.3 + windowswww.111cn.net
*/
header("Content-type: text/html; charset=UTF-8");
define("ROOT",str_ireplace("/waityou/".basename(__FILE__),"",str_ireplace("\","/",__FILE__)));
define("UploadFolder","/uploadfile/");//上传根目录
define("_d",$_SERVER["DOCUMENT_ROOT"]);
define("AllowUploadType","gif|jpg|png|txt|doc|xls|ppt|pdf|rar|zip|7z|chm|mp3|mp4|mpg|mpeg|flv|swf");//允许上传的类型
define("MaxUploadSize",@ini_get("upload_max_filesize"));
$act = empty($_GET["act"])?"":$_GET["act"];
if($act == ""){
html_header();
}elseif($act == "left"){
left();
}elseif($act == "right"){
if(!empty($_POST["upfolder"])) {
upload_file();exit;
}
$dir = empty($_GET["folder"])?"":$_GET["folder"];
if($dir == ""){
right(UploadFolder);
}else{
$del_file = empty($_GET["del_file"])?"":$_GET["del_file"];
if($del_file == "") {
open_folder($dir);
}else{
delete_file($del_file);
}
}
}
代码如下
function html_header(){
echo "
words" content="" />
";
}
function html_footer(){
echo "";
}
function left() {
$yearpath = UploadFolder.date("Y")."/";
if(!is_dir(_d.$yearpath)) @mkdir(_d.$yearpath);
$m=0;
function folder_tree($dir) {
$i = 0;
global $m;
$m++;
if(is_dir($dir)) {
$files = scandir($dir);
foreach ($files as $file) {
$i++;
$currentfile = $dir ."/". $file;
$currentfile = str_replace("//","/",$currentfile);
$last_dir = "";
$prefix = "";
if (is_dir($currentfile)) {
if ($file != "." && $file != "..") {
$minus_count = substr_count(strstr($currentfile,UploadFolder), "/");
if($minus_count <=0 ){
$prefix = "├";
}elseif($minus_count ==1){
$prefix = "├";
}elseif($minus_count ==2) {
$prefix = "├→";
}elseif($minus_count ==3) {
$prefix = "├—→→";
}else{
$prefix = "---";
}
$last_dir .= $prefix."javascript教程:OpenFolder("" . substr($currentfile,strlen(_d)-1) . "/")">". substr(substr($currentfile, strrpos($currentfile, "/")),1) . "
";
echo $last_dir;
folder_tree($currentfile);$m--;
}
}
}
}
}
//global UploadFolder;
代码如下
echo "
";";
echo "├根目录
";
folder_tree($_SERVER["DOCUMENT_ROOT"]."uploadfile/");
echo "
echo "<script>
function OpenFolder(path) {
window.parent.document.getElementById("right").src = "";
var url = window.parent.document.getElementById("right").src;
url = url + "?act=right&folder="+path;
parent.document.getElementById("right").src=url;
}
</script>
";
}
function right($dir) {
header("Content-type: text/html; charset=UTF-8");
echo "
echo "";
$dir = _d.$dir;
$dir = str_replace("//","/",$dir);
$_dir = UploadFolder;
if(is_dir($dir)) {
$arr = array();
$files = scandir($dir);
foreach($files as $file){
if(is_file($dir."/".$file)){
$arr[] = iconv("gbk","utf-8",$file);
}
}
asort($arr);
$_dir = strstr($dir,UploadFolder);
$i = 0;
foreach($arr as $a) {
$i++;
$abpath = str_replace("//","/",$_dir."/".$a);
echo "";
echo "".$a."";
echo "";
echo " 值<>";
echo "图";
echo "";
echo ""))return false;">删除";
echo "";
}
}
echo "";
echo "";
echo "";
echo "<script>
var $ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};";
echo "function changeLine(oo){
var trs = document.getElementsByTagName("tr");
for(var i=0;i
trs[i].style.backgroundColor="#fff";
}
document.getElementById(oo).style.backgroundColor="#ccc";
};";
echo "function OpenFile(id,url,type){
var obj = window.parent.parent.document.getElementById(id);
var selection = document.selection;
obj.focus();
if(type==0){
url = url;
}else if(type==1){
url="";
}
if (typeof obj.selectionStart != "undefined") {
var s = obj.selectionStart;
obj.value = obj.value.substr(0, obj.selectionStart) + url + obj.value.substr(obj.selectionEnd);
obj.selectionEnd = s + url.length;
} else if (selection && selection.createRange) {
var sel = selection.createRange();
sel.text = url;
sel.select();
} else {
obj.value += url;
}
};";
echo "function addFile(_file){
var inputs = $("idFileList").getElementsByTagName("input");
if(inputs.length>1){
for(var i=0;i
alert("已经添加过此文件!");
return false;
}
}
}
var oldlen = $("idFileList").rows.length;
var _i = oldlen + 1;
var newtr = $("idFileList").insertRow(oldlen);
newtr.id = "id_"+_i;
var c0 = newtr.insertCell(0);
c0.innerHTML = _i;
var c1 = newtr.insertCell(1);
var _newfile = $("idfile").cloneNode(true);
$("idfile").name = "upfile[]";
$("idfile").parentNode.appendChild(_newfile);
//_newfile.style = "display:none";
c1.appendChild($("idfile"));
var c2 = newtr.insertCell(2);
c2.innerHTML="删除";
$("idBtnUpload").disabled=false;
$("idBtnDel").disabled=false;
}";
代码如下
echo "function delThisFile(_file){
var _fileList = $("idFileList");
var _len = _fileList.rows.length;
var _j = 0;
for(var i=0;i<_len;i++){
if(_fileList.rows[i].id == _file){
_fileList.deleteRow(i);
break;
}else{
/*_j = _j + 1;
var _newid = "id_"+_j;
_fileList.rows[i].id = _newid;
_fileList.rows[i].cells[0].innerHTML = _j;
_fileList.rows[i].cells[2].innerHTML = "删除";*/
}
}
var len = $("idFileList").rows.length;
//alert(len);
for(var j=0;j
var _newid = "id_"+_j;
_fileList.rows[j].id = _newid;
_fileList.rows[j].cells[0].innerHTML = _j;
_fileList.rows[j].cells[2].innerHTML = "删除";
}
}";
echo "</script>";
}
function delete_file($file){
if(substr_count(strtolower($file),UploadFolder)<1){
echo "access denied!";exit;
}
$dir = dirname($file);
$file = mb_convert_encoding (($file),"gbk","utf-8");
if(!(@unlink(_d.$file))) echo($file."删除失败!");
open_folder($dir);
}
function open_folder($dir){
if(substr($dir,-1,1) != "/") $dir .= "/";
if(substr_count(strtolower($dir),UploadFolder)<1){
echo "access denied!";exit;
}
$dir = str_ireplace("\","/",$dir);
$dir = str_ireplace("//","/",$dir);
right($dir);
}
function upload_file(){
set_time_limit(0);
$maxsize = MaxUploadSize;
if (!is_numeric($maxsize)) {
if (strpos($maxsize, "M") !== false)
$maxsize = intval($maxsize)*1024*1024;
elseif (strpos($maxsize, "K") !== false)
$maxsize = intval($maxsize)*1024;
elseif (strpos($maxsize, "G") !== false)
$maxsize = intval($maxsize)*1024*1024*1024;
}
$allowExt = explode("|",AllowUploadType);
$oFolder = $_POST["upfolder"];
$sErrorMsg = "" ;
foreach ($_FILES["upfile"]["name"] as $key => $error) {
$sFileName = "" ;
if(!empty($_FILES["upfile"]["name"][$key]) && !empty($_FILES["upfile"]["tmp_name"][$key])) {
$sFileName = $_FILES["upfile"]["name"][$key] ;
$sFileName = iconv("utf-8","gbk",$sFileName) ;
$sFileTmp = $_FILES["upfile"]["tmp_name"][$key];
$sFileSize = $_FILES["upfile"]["size"][$key] ;
$sFilePath = _d.$oFolder . $sFileName ;
代码如下
$sFilePath = str_replace("//","/",$sFilePath);
$sFile = substr( $sFileName, 0, strrpos( $sFileName, "." ) ) ;
$sExtension = strtolower(substr( $sFileName, ( strrpos($sFileName, ".") + 1 ) )) ;
if(in_array($sExtension, $allowExt)) {
$iCounter = 0 ;
while ( true ) {
$sFilePath = _d.$oFolder. $sFileName ;
if(is_file( $sFilePath )) {
$iCounter++ ;
$sFileName = $sFile. "(" . $iCounter . ")." . $sExtension ;
}else{
if($sFileSize > $maxsize) {
$sErrorMsg .= "文件:".$sFileName."(".$sFileSize.")超过最大上传尺寸".$maxsize."! ";
break;
}else{
if(is_uploaded_file($sFileTmp)) {
if(!@move_uploaded_file($sFileTmp, $sFilePath)) $sErrorMsg .= "无法移动文件:".$sFileName."! " ;
}else{
$sErrorMsg .= "文件:".$sFileName."非正常上传! ";
break;
}
}
if ( is_file( $sFilePath ) ) {
$oldumask = umask(0) ;
@chmod( $sFilePath, 0777 ) ;
umask( $oldumask ) ;
}
break ;
}
}
if ( file_exists( $sFilePath ) ) {
if ( DetectHtml( $sFilePath ) === true ) {
@unlink( $sFilePath ) ;
}
}
}
}
}
header("location:?act=right&folder=".$oFolder);
}
function DetectHtml( $filePath ){
$fp = @fopen( $filePath, "rb" ) ;
if ( $fp === false || !flock( $fp, LOCK_SH ) ) {
return -1 ;
}
$chunk = fread( $fp, 1024 ) ;
flock( $fp, LOCK_UN ) ;
fclose( $fp ) ;
$chunk = strtolower( $chunk ) ;
if (!$chunk) {
return false ;
}
$chunk = trim( $chunk ) ;
if ( preg_match( "/
return true;
}
$tags = array( "
foreach( $tags as $tag ) {if( false !== strpos( $chunk, $tag ) ) {
return true ;
}
}
if ( preg_match( "!types*=s*[""]?s*(?:w*/)?(?:ecma|java)!sim", $chunk ) ) {
return true ;
}
if ( preg_match( "!(?:href|src|data)s*=s*[""]?s*(?:ecma|java)script:!sim", $chunk ) ) {
return true ;
}
if ( preg_match( "!urls*(s*[""]?s*(?:ecma|java)script:!sim", $chunk ) ) {
return true ;
}
return false ;
}