php 文件上传缩略图路径分析类
<?php //文件上传时分析路径信息 //author:songzhenghe 2014-1-24 //version 0.1 class 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组件,它自己本身就是集群 ...
随机推荐
- Windows10 1709正式版WSL安装(以Ubuntu为例)
因为最近要使用Linux搭服务器,但是用远程的话延迟很烦,用双系统切换很麻烦,用虚拟机又会有点卡,刚好Windows10最近更新了正式版的WSL(windows下的Linux子系统),所以就想尝试一下 ...
- JVM 调优参数详解
GC有两种类型:Scavenge GC 和Full GC 1.Scavenge GC 一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,堆的Eden区域进行GC, ...
- Python文件和流
#coding = utf-8 from pprint import pprint import fileinput #read(n) f = open(r'E:\test_dir\somefile. ...
- AdminLTE前端模板
AdminLTE是一个Bootstrap框架模板,其功能组件并不比我直接提到的Metronic差. 第一次接触过AdminLTE是在学习Jeesite这个开源项目的时候.离现在已经有半年了. Admi ...
- 红米5/红米5 Plus逼出最强魅蓝Note6?降价后已成性价比神机
从品牌到产品命名,小米旗下的红米与魅族旗下的魅蓝似乎是一对天生的对手,如今小米即将发布千元全面屏的红米5/红米5 Plus,暂时没有全面屏手机推出的魅蓝也拿出了自己的应对策略,魅蓝的办法简单粗暴:直接 ...
- 使用vue.js实现checkbox的全选和多个的删除功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- NYOJ17 最长单调递增子序列 线性dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=17 分析: i=1 dp[i]=1 i!=1 dp[i]=max(dp[j]+1) ...
- css权威指南学习笔记--列表与生成内容
列表属性 1.list-style-type:css2多于css2.1 2.list-style-image:有继承,子级列表会继承该图像 3.list-style-position:inside|o ...
- 升级时针对Source oracle home 不存在解决办法
针对于oracle升级从11.2.0.4升级至12.1.0.1,遇到的问题解决. 运行/oracle/app/product/12.1.0.1/dbhome_1/bin/dbua 后 在选择数据库ho ...
- 解决IOS9 下在App中无法打开其他应用的问题
打开 info.plist 文件 ,在根节点下添加下面代码即可,这是由于IOS9新的权限管理机制的问题 <key>LSApplicationQueriesSchemes</key&g ...