文章来源:http://www.cnblogs.com/hello-tl/p/7593033.html

<?php
class TL_Update_File{
private $file = null;//接受图片名称
private $files = [];//图片属性
public $size = null;//上传文件大小限制
public $save_path = null;//保存路径
public $mime = null;//文件上传支持类型
private $error = null;//图片不符合要求者
//接受图片
function __construct($file=null){
$this->save_path = str_replace("\\","/",dirname(__FILE__))."/";
$this->file = $file;
if($file){
$this->files = $_FILES[$file];
}else{
$this->files = $_FILES;
}
}
//一系列属性向
private function attribute(){
if($this->file){
$this->empty_ture();
}else{
$this->empty_false();
}
if($this->size){
if($this->file){
$this->Size_ture();
}else{
$this->Size_false();
}
}
if($this->mime){
if($this->file){
$this->mime_ture();
}else{
$this->mime_false();
}
}
}
//判断图片是否为空
function empty_false(){
foreach ($this->files as $key => $value){
if($this->files[$key]['error']){
$this->error[$key] = $value;
$this->error[$key]['tl_error'] = "改图片为空";
unset($this->files[$key]);
}else{
$this->files[$key]['mime'] = substr($value['name'], strrpos($value['name'], ".")+1);
}
}
}
//判断图片是否为空
function empty_ture(){
if($this->files['error']) {
$this->error[$this->file] = $this->files;
$this->error[$this->file]['tl_error'] = "改图片为空";
$this->files=[];
}else{
$this->files['mime'] = substr($this->files['name'], strrpos($this->files['name'], ".") + 1);
}
}
//文件后缀名是否受限制
function mime_ture(){
if($this->files){
if(!in_array($this->files['mime'],$this->mime)){
$this->error[$this->file] = $this->files;
$this->error[$this->file]['tl_error'] = "不支持改后缀名";
$this->files=[];
}
}
}
//文件后缀名是否受限制
function mime_false(){
foreach ($this->files as $key => $value){
if(!in_array($this->files[$key]['mime'],$this->mime)){
$this->error[$key] = $value;
$this->error[$key]['tl_error'] = "不支持改后缀名";
unset($this->files[$key]);
}
}
}
//文件大小是否受限制
function Size_ture(){
if($this->files['size'] > $this->size){
$this->error[$this->file] = $this->files;
$this->error[$this->file] = $this->files;
$this->error[$this->file]['tl_error'] = "文件过大";
$this->files=[];
}
}
//文件大小是否受限制
function Size_false(){
foreach ($this->files as $key => $value){
if($this->files[$key]['size'] > $this->size){
$this->error[$key] = $value;
$this->error[$key]['tl_error'] = "文件过大";
unset($this->files[$key]);
}
}
}
//保存图片
function save_file(){
if($this->files){
$file_path_dir = date('Ym',time()) ."/";
$file_name = time() . rand(00000,99999) . "." . $this->files["mime"];
$this->is_dir_on_off($this->save_path . date('Ym',time()) ."/");
if($this->file){
$this->save_file_ture($file_path_dir,$file_name);
}else{
$this->save_file_false($file_path_dir,$file_name);
}
}
}
//保存图片
function save_file_ture($file_path_dir,$file_name){
move_uploaded_file($this->files["tmp_name"] , $this->save_path . $file_path_dir . $file_name);
}
//保存图片
function save_file_false($file_path_dir,$file_name){
foreach ($this->files as $key => $value){
move_uploaded_file($this->files[$key]["tmp_name"] , $this->save_path . $file_path_dir . $file_name);
}
}
//创建目录
function is_dir_on_off($file_path){
if(!is_dir($file_path)){
mkdir($file_path,0777);
}
}
//保存文件
function move(){
$this->attribute();
$this->save_file();
}
}

文章来源:http://www.cnblogs.com/hello-tl/p/7593033.html  

PHP:图片上传的更多相关文章

  1. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  2. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  3. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

  4. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  5. 对百度的UEditor多图片上传的一些补充

    我已经写了一篇文章关于百度的UEditor提取多图片上传模块.如果还没有看过,请点击以下链接查看 http://www.cnblogs.com/luke1006/p/3719029.html 出差了两 ...

  6. 使用localResizeIMG3+WebAPI实现手机端图片上传

    前言 惯例~惯例~昨天发表的使用OWIN作为WebAPI的宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他的地方...代码如下: namespace Conso ...

  7. TinyMCE的使用(包括汉化及本地图片上传功能)

    TinyMCE我就不多介绍了,这是下载地址:https://www.tinymce.com/download/ 下载下来是英文版,要汉化也很简单.首先去网上随便下载个汉化包,然后把汉化包解压后的lan ...

  8. 包含修改字体,图片上传等功能的文本输入框-Bootstrap

    通过jQuery Bootstrap小插件,框任何一个div转换变成一个富文本编辑框,主要特色: 在Mac和window平台下自动针对常用操作绑定热键 可以拖拽插入图片,支持图片上传(也可以获取移动设 ...

  9. PHP多图片上传实例demo

    upload.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  10. .NET MVC实现多图片上传并附带参数(ajaxfileupload)

    做网站呢,都免不了要做图片上传. 还记得去年做微信的时候用WebAPI+ajaxfileupload.js做了一个能够附带参数上传的功能,博文地址:.NET WebAPI 实现图片上传(包括附带参数上 ...

随机推荐

  1. bzoj 2456: mode【瞎搞】

    这题加个#include都会MLE-- 神思路,每个数抵消宇哥和它不同的数,最后剩下的就是众数 #include<cstdio> int n,la,x,tot; int main() { ...

  2. flask框架模板系统

    flask模板引擎 flask默认使用了Jinja2模板引擎,我们在使用模板的时候,需要在同级目录文件夹下 创建一个templates的文件夹,然后这个文件夹内放置我们想要的模板实例即可: 在正常普通 ...

  3. codeforces 570 E. Pig and Palindromes (DP)

    题目链接: 570 E. Pig and Palindromes 题目描述: 有一个n*m的矩阵,每个小格子里面都有一个字母.Peppa the Pig想要从(1,1)到(n, m).因为Peppa ...

  4. UVA Recurrences 矩阵相乘+快速幂

    题目大意: f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n - 3) + ... + ad f(n - d),已给递推公式,求f(n)的大小. 解题思路: n很大, ...

  5. bzoj258 [USACO 2012 Jan Gold] Bovine Alliance【巧妙】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=111 传送门2:http://www.lydsy.com/JudgeOn ...

  6. 贪心 Codeforces Round #236 (Div. 2) A. Nuts

    题目传送门 /* 贪心:每一次选取最多的线段,最大能放置nuts,直到放完为止,很贪婪! 题目读不懂多读几遍:) */ #include <cstdio> #include <alg ...

  7. 419 Battleships in a Board 甲板上的战舰

    给定一个二维的甲板, 请计算其中有多少艘战舰. 战舰用 'X'表示,空位用 '.'表示. 你需要遵守以下规则:    给你一个有效的甲板,仅由战舰或者空位组成.    战舰只能水平或者垂直放置.换句话 ...

  8. sdut2784&cf 126b Good Luck!(next数组)

    链接 next数组的巧妙应用  学弟出给学弟的学弟的题.. 求最长的 是前缀也是后缀同时也是中缀的串  next的数组求的就是最长的前后缀 但是却不能求得中缀 所以这里 就把尾部去掉之后再求 这样就可 ...

  9. chart.js图表 传值问题

    php:         $json['status'] = ture;                $json['list']=implode(',',$data);                ...

  10. AJPFX讲解java单例模式

    单例设计模式概述:      单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. 3 ...