Posts Tagged ‘帝国CMS函数’

DoTranFile() 帝国CMS文件上传函数

星期四, 五月 27th, 2010

一、简要描述

$filer=DoTranFile($file,$file_name,$file_type,$file_size,$classid,$ecms=0);
Ecms版本:6.0

参数:
$file
$file_name 文件名包括拓展名 例如:image.jpg
$file_type 文件类型描述 例如:image/pjpeg
$file_size 文件大小 单位KB
$classid 栏目ID
$ecms=0 可选 错误信息提示 遵循 e/class/connect.php function printerror()
函数定义位置:e/class/connect.php

返回值:成功返回数组 失败跳出程序又printerror()打印错误
——————————————————–
数组成员key 解释
filetype:文件类型 例如:.jpg
insertfile:文件名无拓展名 例如:img
filename:文件名包括拓展名 例如:img.jpg
filepath:文件目录 例如:2010-05-27
savepath:文件硬盘目录 例如:D:\php\***\d/file/classfile/2010-05-27/
url:文件网站绝对目录 例如:/d/file/classfile/2010-05-27/name.jpg
name: 缩略图(其实没有生成缩略图只是给了这个路径) D:\php\****\d/file/classfile/2010-05-27/small + name
yname:D:\php\***\d/file/classfile/2010-05-27/name.jpg
tran:1
filesize:文件大小 单位KB

二、函数源代码

//上传文件
function DoTranFile($file,$file_name,$file_type,$file_size,$classid,$ecms=0){
	global $public_r,$class_r,$doetran;

	//文件类型
	$r[filetype]=GetFiletype($file_name);

	//文件名
	$r[insertfile]=ReturnDoTranFilename($file_name,$classid);
	$r[filename]=$r[insertfile].$r[filetype];

	//日期目录
	$r[filepath]=FormatFilePath($classid,$mynewspath,0);
	$filepath=$r[filepath]?$r[filepath].'/':$r[filepath];

	//存放目录
	$fspath=ReturnFileSavePath($classid);
	$r[savepath]=ECMS_PATH.$fspath['filepath'].$filepath;

	//附件地址
	$r[url]=$fspath['fileurl'].$filepath.$r[filename];

	//缩图文件
	$r[name]=$r[savepath]."small".$r[insertfile];

	//附件文件
	$r[yname]=$r[savepath].$r[filename];
	$r[tran]=1;

	//验证类型
	if(CheckSaveTranFiletype($r[filetype]))
	{
		if($doetran)
		{
			$r[tran]=0;
			return $r;
		}
		else
		{
			printerror('TranFail','',$ecms);
		}
	}

	//上传文件
	$cp=@move_uploaded_file($file,$r[yname]);
	if(empty($cp))
	{
		if($doetran)
		{
			$r[tran]=0;
			return $r;
		}
		else
		{
			printerror('TranFail','',$ecms);
		}
	}
	DoChmodFile($r[yname]);
	$r[filesize]=(int)$file_size;
	return $r;
}

//远程保存忽略地址
function CheckNotSaveUrl($url){
	global $public_r;
	if(empty($public_r['notsaveurl']))
	{
		return 0;
    }
	$r=explode("\r\n",$public_r['notsaveurl']);
	$count=count($r);
	$re=0;
	for($i=0;$i<$count;$i++)
	{
		if(empty($r[$i]))
		{continue;}
		if(stristr($url,$r[$i]))
		{
			$re=1;
			break;
	    }
    }
	return $re;
}

三、函数注释

Tags: , ,