php 文件上传缩略图路径分析类
<?php//文件上传时分析路径信息//author:songzhenghe 2014-1-24//version 0.1class path_ana { private $data_root; private $web_root; private $http_domain; private $file; private $r; public function __construct(){ //从配置文件中读取 $this->data_root='E:/wwwroot2/cms/common/upload/'; $this->web_root ='E:/wwwroot2/cms/'; $this->r=null; } //$file E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg public function init($file){ $this->file=$file; $return=array(); $pathinfo=pathinfo($file); // E:/wwwroot2/cms/common/upload/2013/08/ $return[0]=$pathinfo['dirname'].'/'; // 345349534.jpg $return[1]=$pathinfo['basename']; // 345349534 if(strrpos($return[1],'.')!==false){ $return[2]=substr($return[1],0,strrpos($return[1],'.')); }else{ $return[2]=$return[1]; } // jpg $return[3]=$pathinfo['extension']; // 2013/08/345349534.jpg $return[4]=$this->str_replace_once($this->data_root,'',$file); // 2013/08/ $return[5]=dirname($return[4]).'/'; // E:/wwwroot2/cms/common/upload/ $return[6]=$this->data_root; // common/upload/2013/08/345349534.jpg $return[7]=$this->str_replace_once($this->web_root,'',$file); // common/upload/2013/08/ $return[8]=dirname($return[7]).'/'; // E:/wwwroot2/cms/ $return[9]=$this->web_root; // common/upload/ $return[10]=preg_replace('/'.preg_quote($return[5],'/').'$/i','',$return[8],1); $return[11]=$this->http_domain.$return[7]; // /common/upload/2013/08/345349534.jpg $return[12]='/'.$return[7]; // E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg $return[13]=$this->file; $this->r=$return; return $return; } private function str_replace_once($needle,$replace,$haystack) { $pos=strpos($haystack,$needle); if ($pos===false) return $haystack; return substr_replace($haystack,$replace,$pos,strlen($needle)); } // public function rename_file($prefix='thumb_',$suffix=''){ if($this->r[3]){ $new=$this->r[0].$prefix.$this->r[2].$suffix.'.'.$this->r[3]; }else{ $new=$this->r[0].$prefix.$this->r[2].$suffix; } return $new; } //}echo '<pre>';$file='E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg';$path_ana=new path_ana();$r=$path_ana->init($file);print_r($r);$file=$path_ana->rename_file();$r=$path_ana->init($file);print_r($r); |
Array
(
[0] => E:/wwwroot2/cms/common/upload/2013/08/
[1] => 345349534.jpg
[2] => 345349534
[3] => jpg
[4] => 2013/08/345349534.jpg
[5] => 2013/08/
[6] => E:/wwwroot2/cms/common/upload/
[7] => common/upload/2013/08/345349534.jpg
[8] => common/upload/2013/08/
[9] => E:/wwwroot2/cms/
[10] => common/upload/
[11] => http://www.cms.com/common/upload/2013/08/345349534.jpg
[12] => /common/upload/2013/08/345349534.jpg
[13] => E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg
)
php 文件上传缩略图路径分析类的更多相关文章
- Spring MVC文件上传下载工具类
import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import ...
- 文件上传: FileItem类、ServletFileUpload 类、DiskFileItemFactory类
文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFi ...
- SFTP 文件上传下载工具类
SFTPUtils.java import com.jcraft.jsch.*; import com.jcraft.jsch.ChannelSftp.LsEntry; import lombok.e ...
- tp5下的文件上传与下载类
class FieldInterfun extends Controller { /** * [upload 上传文件] * @param [type] $file [description] * @ ...
- 小兔Java教程 - 三分钟学会Java文件上传
今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...
- struts2实现文件上传(多文件上传)及下载
一.要实现文件上传,需在项目中添加两个jar文件 二.上传准备的页面 注:必须植入enctype="multipart/form-data"属性,以及提交方式要设置成post &l ...
- 【Java EE 学习 72 上】【数据采集系统第四天】【增加调查logo】【文件上传】【动态错误页指定】【上传限制】【国际化】
增加logo的技术点:文件上传,国际化 文件上传的功能在struts2中是使用文件上传拦截器完成的. 1.首先需要在页面上添加一个文件上传的超链接. 点击该超链接能够跳转到文件上传页面.我给该表单页面 ...
- chunkupload 文件上传断点续传组件(java) - 正式发布
chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单. chunkupload实现如下功能: · 实现断点续传 · ...
- 我心中的核心组件(可插拔的AOP)~分布式文件上传组件~基于FastDFS
回到目录 一些概念 在大叔框架里总觉得缺点什么,在最近的项目开发中,终于知道缺什么了,分布式文件存储组件,就是缺它,呵呵,对于分布式文件存储来说,业界比较公认的是FastDFS组件,它自己本身就是集群 ...
随机推荐
- libcurl-7.54.1附加zlib1.2.11的编译
手上有个小程序需要通过HTTP协议通信,选择了出名的libcurl作为支持库.由于网上的教程多是命令行编译,本人记性不好,比较讨厌记住一堆命令,因此折腾了一天通过VS对libcurl和zlib进行了编 ...
- 面向对象程序设计_tesk1_寒假伊始
大一下学期的自我目标(要求包含对大一上学期的总结.对面向对象课程完成后学习到的能力的预期,对面向对象课程的期望.对编程和专业能力的愿景规划) 在大学的第一个学期,相信很多人都是在得过且过度过,我也不例 ...
- Scala学习——Scala By Example——to be continued
这一篇是来自官网的Scala By Example 即Tutorial后更详细地对Scala怎么用给了示例 该文一开始给了一个快速排序的示例 版本一: def sort(xs: Array[Int]) ...
- CSS3动画理解与应用
CSS3动画理解与应用 Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开始,结束.Anima ...
- ECharts 定制 label 样式
起因 实现对 label 的样式定制,自定义字体颜色.大小等属性:效果如下图 实现 itemStyle: { normal: { color: '#f7ba0e', label: { ...
- Python基础.md
数据结构 列表 访问 list1 = ['java','C','C++','Python'] In [10]: list1[1] Out[10]: 'C' In [11]: list1[-1] Out ...
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释 (生动形象)
[转自]:https://blog.csdn.net/sd4015700/article/details/50109939 jvm区域总体分两类,heap区和非heap区.heap区又分:Eden S ...
- Java基础加强之并发(二)常用的多线程实现方式
概述 常用的多线程实现方式有2种: 1. 继承Thread类 2. 实现Runnable接口 之所以说是常用的,是因为通过还可以通过JUC(java.util.concurrent)包中的线程池来实现 ...
- verilog实现VGA显示方块屏幕保护
verilog实现VGA显示方块屏幕保护 输入和输出 时钟信号 clk 复位信号 reset rgb三颜色输出 [2:0] r,g, [1:0] b 行信号输出 hs 列信号输出 vs 参数设定 设定 ...
- Sequelize-nodejs-11-Raw queries
Raw queries原始查询 就是使用了原始的查询语句,如UPDATE users SET y = 42 WHERE x = 12 As there are often use cases in w ...