自写的简单实用的图片上传类(一张或多张图片)

 某天想整理个简洁好用的上传类,所以自己搜索了下看到代码都n多,看的我头大。所以索性自己写了个。

看代码,用法在后边,也可上传flash:

小技巧:判断是否是图片可直接用getimagesize判断,因若不是图片此函数会返回false

功能:上传一张或多张图片,或上传flash,并且记入上传图片到数据库

返回:返回数组包括 标识,相对路径和绝对路径

<?
/**
 * @author bobboy007@gmail.com
 *jyw
 */
class uploadfile{
	var $uploaddir='';
	var $webroot = '';
 	/**
 	 * 设置上传目录最后带 '/'
 	 * @param $webroot
 	 * @param $dirpath
 	 * @return void
 	 */
 	function setuploaddir($webroot,$dirpath){
		$this->webroot = $webroot;
		$path =$this->webroot.$dirpath .date("Ym")."/";
		is_dir($path) || $this->make_dir($path);
		$this->uploaddir = $path;
	}
	
	/**
	 * 上传一张图片,type=1是图片,否则flash,返回array(1,相对路径,全路径)
	 * @param $filearr
	 * @param $type
	 * @return array
	 */
	function uploadimg($filearr,$type=1){
		if($type==1){//图片
 			$imginfo = getimagesize($filearr["tmp_name"]);
			if(!$imginfo)	return array(-1,'imagetype error');
		}else{
			$swfmime = 'application/x-shockwave-flash';
			if($swfmine != $filearr['type'])return array(-1,'swftype error');
		}
 		$extname = strtolower(pathinfo($filearr["name"], PATHINFO_EXTENSION)); //扩展名
		$newfilename = $this->getfilename();
 		$fullpath = $this->uploaddir."$newfilename.$extname";
 		if(!move_uploaded_file($filearr["tmp_name"], $fullpath))return array(-2,'move tmp error');
		$imgpath = str_replace($this->webroot, '', $fullpath);
		$this->writeimglog($imginfo[0],$imginfo[1],$imgpath);//写入日志
 		return array(1,$imgpath,$fullpath);
  	}
	
	
	/**
	 * 上传多张图片
	 * @param $filearr
	 * @param $type
	 * @return array
	 */
	function uploadmoreimg($filearr,$type=1){
		$rarr = array();
		for($i=0;$i<count($filearr['name']);$i++){
			$farr = array(
				'name'=>$filearr['name'][$i],
				'type'=>$filearr['type'][$i],
				'tmp_name'=>$filearr['tmp_name'][$i],
				'error'=>$filearr['error'][$i],
				'size'=>$filearr['size'][$i]
			);
		 
		 	$rarr[] = $this->uploadimg($farr,$type);
		}
		return $rarr;
	}
	
	
	/**
	 * 返回随机文件名
	 * @return string
	 */
	function getfilename(){
		return strftime("%H%M%S", time()) . mt_rand(1000, 9999);
	}
	
	/**
	 * 写入图片日志到数据库
	 * @param $width
	 * @param $height
	 * @param $uploadpath
	 * @return void
	 */
	function writeimglog($width,$height,$uploadpath){
		global $_SGLOBAL;
		$inarr = array(
			'username'=>$_SGLOBAL['super_username'],
			'uploadtime'=>time(),
			'imgwh'=>$width.'*'.$height,
 			'uploadpath'=>$uploadpath
		);
		inserttable('imagelog',$inarr);
	}
	/**
	 * 创建文件夹,需要全路径
	 * @param $dir
	 * @param $mode
	 * @return void
	 */
	function make_dir($dir, $mode = 0777){
    	if (is_dir($dir) || @mkdir($dir, $mode)) return true;
    	if (!$this->make_dir(dirname($dir), $mode)) return false;
    	return @mkdir($dir, $mode);
	}
}
/*
	$obj_img = new uploadfile();
	$obj_img->setuploaddir(WEB_ROOT,'uploadpic/');
	$file = $obj_img->uploadmoreimg($_FILES["fileup"]);
	print_r($file);
*/
?>

 

 

WangEditor 是一个简单易用的网页富文本编辑器,wangeditor5 是其最新版本。在使用 wangeditor5 时,如果需要设置上传网络图片只能上传一张,可以使用编辑器的 `imageUpload` 配置项,并在其中加入适当的逻辑来限制上传的数量。 以下是基本的配置方法: 1. 首先,初始化 WEditor 对象。 2. 在配置项中设置 `imageUpload` 方法,该方法会在图片上传前被调用。 3. 在 `imageUpload` 方法中,你可以编写逻辑来处理上传事件,例如在上传前检查当前已上传图片的数量,如果超过了限制(在这个场景中是1),则可以拒绝上传。 示例代码如下: ```javascript // 初始化 WEditor const editor = new wangEditor.Editor('#editor'); // 配置编辑器 editor.config.imageUpload = function (insertImage, result) { const images = document.getElementsByTagName('img'); // 检查当前图片数量是否已达到限制 if (images.length >= 1) { // 如果已达到限制,则给出提示并返回 alert('只能上传一张网络图片'); return; } // 没有达到限制,则调用默认的上传方法或自己的上传逻辑 insertImage(); // 如果有自己的上传逻辑,可以在这里处理 // ... }; // 配置其他选项 // ... // 渲染编辑器 editor.create(); ``` 需要注意的是,上面的代码假设你希望在编辑器中只保留一张网络图片。如果你希望只上传一张图片,但不关心编辑器中是否已经存在其他网络图片,那么你需要在 `imageUpload` 方法中添加逻辑来控制上传行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值