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组件,它自己本身就是集群 ...
随机推荐
- 字典树(前缀树)-Java实现
字典树 字典树是一种树形结构,优点是利用字符串的公共前缀来节约存储空间.在这提供一个自己写的Java实现,非常简洁. 根节点没有字符路径.除根节点外,每一个节点都被一个字符路径找到. 从根节点到某一节 ...
- hihocoder Round #c1(hihoCoder太阁最新面经算法竞赛1 )
Test链接:https://cn.vjudge.net/contest/231849 选自hihoCoder太阁最新面经算法竞赛1 更多Test:传送门 A:区间求差 给一组区间集合A和区间集合B, ...
- P4197 Peaks
题目描述 在Bytemountains有N座山峰,每座山峰有他的高度\(h_i\).有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询问从点 ...
- Python高级编程和异步IO并发编程
第1章 课程简介介绍如何配置系统的开发环境以及如何加入github私人仓库获取最新源码. 1-1 导学 试看 1-2 开发环境配置 1-3 资源获取方式第2章 python中一切皆对象本章节首先对比静 ...
- grep 搜索多个同时满足的条件
(二) Grep AND 操作 1. 使用 -E 'pattern1.*pattern2' grep命令本身不提供AND功能.但是,使用 -E 选项可以实现AND操作. grep -E 'patt ...
- 构建 CDN 分发网络架构
cdn基本架构: CDN的基本目的:1.通过本地缓存实现网站的访问速度的提升 CDN的关键点:CNAME在域名解析:split智能分发,引流到最近缓存节点
- Apache Shiro(一)-登录认证和权限管理初识
What is Apache Shiro? Apache Shiro是一个功能强大.灵活的,开源的安全框架.它可以干净利落地处理身份验证.授权.企业会话管理和加密. Apache Shiro的首要目标 ...
- javaScript真值和假值以及相等操作符
真值和假值 相等操作符(==和===) 下面分析一下不同类型的值用相等操作符(==)比较后的结果 toNumber 对不同 类型返回的结果如下: toPrimitive 对不同类型返回的结果如下: = ...
- MySQL学习【第四篇mysql体系结构管理】
一.客户端与服务端模型 1.mysql是一个典型的c/s服务结构 1.mysql自带的客户端程序(/application/mysql/bin) mysql mysqladmin my ...
- HO引擎近况20180111
明明想着10号更新了,怎么就忘了呢? 公司的项目又被砍了,几个同事被开,我又转到另外一下组了,难道真的是我到哪哪黄? 快过年了,今年公司年会就在附近,太好了不用想怎么编理由请假事了,还有可能中个奖品, ...