PHP后台上传图片

<?php
/*
    by 的雨
*/
date_default_timezone_set(‘Asia/Chongqing‘);
header("content-type:text/html;charset=utf-8");
//这是上传图片的类
class Updateclass
{
	public $pathall;
	public $picname;
	public function update($file,$kaiqi=false,$w=0,$H=0)
	{
		//return $file;die;
		foreach($file as $key=>$val)
		{
		$updatename="{$key}";
		}
		$file=$file;
		$name=$file[$updatename][‘name‘]; //文件名称
		$size=$file[$updatename][‘size‘]; //文件大小
		$type=$file[$updatename][‘type‘]; //文件类型
		$tmp_name=$file[$updatename][‘tmp_name‘]; //文件临时文件
		$error=$file[$updatename][‘error‘]; //文件错误
		if(($error))
		{
			switch($error)
			{
				case 1:
				$s="超过了配置的大小";
				break;
				case 2:
				$s="超过了表单的大小";
				break;
				case 3:
				$s="部分文件上传";
				break;
				case 4:
				$s="没有文件";
				break;
				case 6:
				$s="找不到临时文件";
				break;
				case 7:
				$s="文件不可写";
				break;
				case 8:
				$s="由于扩展PHP程序中断文件上传";
				break;
			}
			$re=‘上传的错误提示‘;
			return $s.‘>‘.$re;

		}
		else
		{

			//判断是否是数组中的类型
			$arr=array(‘image/jpeg‘,‘image/jpg‘,‘image/png‘,‘image/gif‘);
			if(!in_array($type,$arr))
			{
				$re=‘上传的错误提示‘;
				$s=‘上传的格式不对‘;
				return $s.‘>‘.$re;
				exit;
			}
			//判断是否是http post提交
			if(!is_uploaded_file($tmp_name))
			{
				$re=‘上传的错误提示‘;
				$s=‘此文件不是通过post提交‘;
				return $s.‘>‘.$re;
				exit;
			}
			else
			{
				//获取真实的名字,以时间为命名
				$NAME=date(‘Ymd‘,time()).rand(0,999999999);
				$hou=explode(‘.‘,$name);
				$houzui=$hou[count($hou)-1];
				$p=date(‘Ym‘);

				$path=‘uploade/‘.$p;
				$this->pathall=$path;
				$this->picname=$NAME.‘.‘.$houzui;
				if(!is_dir($path))
				{
					mkdir($path,0777,true);
					$path=$path.‘/‘.$NAME.‘.‘.$houzui;

					if(move_uploaded_file($tmp_name,$path))
					{
						if($kaiqi==true)
						{
							$ys=$this->yasuo($path,$w,$H);
						}
						if($kaiqi==true)
						{
						return $path.‘*‘.$ys."@";
						}
						else
						{
							return $path.‘*‘;
						}

					}
					else
					{
						return "上传失败";
					}
				}
				else
				{
					$path=$path.‘/‘.$NAME.‘.‘.$houzui;

					if(move_uploaded_file($tmp_name,$path))
					{
						if($kaiqi==true)
						{
							$yasuo=$this->yasuo($path,$w,$H);
						}

						///echo "<div style=\"width:400px\"><img width=\"400px\" src=\"$path\"></div>";
						if($kaiqi==true)
						{
						return $path.‘*‘.$ys."@";
						}
						else
						{
							return $path.‘*‘;
						}

					}
					else
					{
						return "上传失败";
					}
				}

			}
		}
		}

	public function yasuo($from,$W,$H){
	$yasuo_path=$this->pathall.‘/‘.date(‘Ym‘);
	if(!is_dir($yasuo_path))
	{
		mkdir($yasuo_path,0777,true);
	}
	$from="$from";
	list($width,$height,$imagestype)=getimagesize($from);    //获得原来照片的宽,高,文件类型
	$get_style=image_type_to_mime_type($imagestype);          //这是获取图片类型 image/jpeg
	//等同于 $get_style=getimagesize($from)[mine]; 
	$imagecreatefrom=str_replace(‘/‘,‘createfrom‘,$get_style); //替换成 imagecreatefromjpeg
	$imagejpeg=str_replace(‘/‘,null,$get_style);    //替换成 imagejpeg
	$yuanben_image=$imagecreatefrom($from);  //imagecreatefromjpeg()  由文件或 URL 创建一个新图象,原来的图片
	$yasuo_image=imagecreatetruecolor($W,$H);  //这是创建一个新的画布,存放目标图片
	imagecopyresampled($yasuo_image,$yuanben_image,0,0,0,0,$W,$H,$width,$height); //imagecopyresampled 重采样拷贝部分图像并调整大小
	//imagecopyresampled(目标图象连接资源,源图象连接资源,目标 X 坐标点,目标 Y 坐标点,源的 X 坐标点,源的 Y 坐标点,目标宽度,目标高度,源图象的宽度,源图象的高度);
	//header(‘content-type: $get_style‘);   //头部输出图片的类型  header(‘Content-Type: image/jpeg‘);
	$imagejpeg($yasuo_image,"$yasuo_path/".‘yasuo‘.$this->picname); //网页中输出的图片类型,压缩图保存的位置
	return "$yasuo_path/".‘yasuo‘.$this->picname;
	imagedestroy($yasuo_image);              //销毁压缩后的图片
	imagedestroy($yuanben_image);	//销毁原来的图片
	}
}

?>

PHP后台上传图片加压缩图片,个人是新手,若有错误,请多多包涵》

时间: 2024-10-09 13:25:07

PHP后台上传图片的相关文章

Django后台上传图片,以及前端的显示

#setting配置: MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media") #注册完admin后,在后台上传图片的时候,会自动将图片保存到这个media文件夹下,#upload_to----在media文件夹下再创建一个文件夹 class Projects(models.Model): '''作品图片''' img = models.ImageField(upload_to='img'

yii2后台上传图片,前台也能显示 的方法

备注:::很low    高端人士 勿入  支持 吐槽  有你们的吐槽才有我的进步 还不会yii上传的  go   out    (哈哈,开玩笑) 就是  上传图片的路径直接保存到前台,然后把前台的图片 copy  一份给后台,这样就能用啦 因为我们的项目是 前台一个域名直接访问到web目录,后台一个域名访问到web目录,所以,用  ../../  跳出目录 不好使

Django 后台上传图片前端无法展示

Django admin 实现后台上传文件并在前端展示 1. 首先在model里定义属性: head_img = models.ImageField(u'图片',upload_to='img') 2. 修改settings.py, MEDIA_ROOT = 'statics/' MEDIA_URL = '/' 前端添加 "/static/" 3. 数据库对应实体的表中添加head_img字段,这个只是用来保存文件路径的. 4. 上面配置代表的意思大概是: 上传图片到:web程序目录/s

django里上传图片的操作

  在django里图片上传里,分为两种一种是在django的后台上传图片,以数据库的方式上传,另一种是在html页面以表单的方式上传 首先要先安装下这个包 pip install Pillow==3.4.1 setting里需要设置 上传的路径 MEDIA_ROOT=os.path.join(BASE_DIR,'static/media') 在model里要配置数据库 class PicTest(models.Model): pic=models.ImageField(upload_to='b

Linux系统安全需要注意的一些问题

写在前面:当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务 如果某一天当你登录服务器发现 /bin/bash –i,python -c 'import pty; pty.spawn("/bin/sh")' 等命令在服务器上出现的时候,那么恭喜你,服务器被入侵了 但是入侵者都是很聪明的,首先会执行以下命令 unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;

atitit.ajax上传文件的实现原理 与设计

atitit.ajax上传文件的实现原理 与设计 1. 上传文件的三大难题 1 1.1. 本地预览 1 1.2. 无刷新 1 1.3. 进度显示 1 2.  传统的html4  + ajax 是无法直接实现上传文件 1 2.1. 传统的实现方式iframe 2 2.2. html5转码base64 3 2.3. 其它插件FLASH的实现原理 3 3. 上传进度的实现原理 3 3.1. 使用ajax结合服务端的进度返回,比較麻烦 4 4. 本地预览的解决 4 4.1. 用HTML5上传文件 4 5

[Windows Server 2012] WordPress安全设置方法

★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:WordPress安全设置. 本节主要讲WordPress如何防止黑客上传木马并对网站挂马,至于WordPress的安装则不在本节讲述 范围! 本节的WordPress系统已经安装,网址为:http://localhost/,网站安装目录为: D:\wwwroot\WordPress\web 需要注意的是:

获取img的真实宽高

之前项目后台上传图片时需要对图片的宽高做限制,一开始百度了之后使用js进行判断,可是这种方式存在一定问题,后来就改在后台判断了.现在吧这两种方式都贴出来. 一.用js获取: 先说第一个方法:obj.style.width:这个方法,只有在标签里用style属性写进了width的大小,才可以获取到值,否则只返回的为空.看下面的demo: <img style="width:400px" src="http://img.hb.aicdn.com/787bf87d05ad77

jquery实现滑动动画及轮播

在做这个之前我已经模仿了一遍大神的轮播动画做了一次其切换模式就是一张图片隐藏另一张图片显示过渡效果是渐入(fadein),但是目前的动画切换大多数都是用图片的左右切换动作的于是在网上看了一些关于这类型的文章然后再结合自己的理解写了一下. 先上html代码 <div id="wrapper"> <div id="show-area"> <ul> <li id="first"><a href=&q