PHP服务器文件管理器开发小结(七):应用jQueryUI预览服务器图片
2015-02-19 09:00
507 查看
上一节讨论了利用jQueryUI实现用户友好的新建、查看和编辑文件的界面。然而,这些界面都是针对纯文本的,如果是图像的话,查看文件仅提供纯文本就很不友好了。因此,需要为前端提供图像浏览的方法。
先提供前端JavaScript的代码,首先是“原材料”:
然后,在服务端getFileElemInfo中,根据文件的后缀名判断是否是图像文件:
在网页上查看源码,会发现在img中填充的是图像文件在服务器上的路径。然而,用于远程图像浏览的应该是相对路径,因此需要从绝对路径向相对路径进行转化。
首先,需要获取服务器上的本地路径名:
应用路径分析的方法获取相对路径:
最后,修改文件属性列举部分的代码:
![](http://s3.51cto.com/wyfs02/M01/59/CB/wKioL1TlNoujZrFcAAZAy4uH1eY594.jpg)
本文出自 “Accplayer的小地方” 博客,请务必保留此出处http://accplaystation.blog.51cto.com/9917407/1614853
先提供前端JavaScript的代码,首先是“原材料”:
<div id="dialogImage" style="display:none"> <img alt="" src="" id="imgView"/> </div>然后在onElemAct中添加:
case "image": $('#imgView').attr('src', strViewPath); $('#dialogImage').dialog({ height:'auto', width:'auto', position:{my:'center',at:'center',collision:'fit'}, modal:false, draggable:true, resizable:true, title:'View Image', show:'slide', hide:'explode' }); break;很简单,只要将图片的路径填充到<img>控件中就好啦~~~
然后,在服务端getFileElemInfo中,根据文件的后缀名判断是否是图像文件:
$fileExt = strtolower(end(explode(".", $elemName))); $listImgExt = array("bmp", "png", "jpg", "jpeg", "gif", "ico"); if (in_array($fileExt, $listImgExt)) { $viewMode = "image"; } else { $viewMode= "content"; } $encodedFilePath = urlencode($filePath); if (is_readable($filePath)) $info.= "<li><a href=\"#\" title=\"view\" onClick=\"onElemAct('$viewMode','$encodedFilePath')\"><img src=\"images/view32.png\" alt=\"\" class=\"tabmenu\"/></a></li>";看起来很美,似乎已经一切OK了,但是实际使用时,点击出来的都是错误的图标……
在网页上查看源码,会发现在img中填充的是图像文件在服务器上的路径。然而,用于远程图像浏览的应该是相对路径,因此需要从绝对路径向相对路径进行转化。
首先,需要获取服务器上的本地路径名:
$_SESSION["index"]=__FILE__;之所以使用SESSION,因为展示的网页和获取图像路径的PHP路径可能有差异。
应用路径分析的方法获取相对路径:
function getRelativePath($currPath, $targetPath) { $targetFile = basename($targetPath); $listCurr = explode("/", $currPath); array_pop($listCurr); $listTarget = explode("/", $targetPath); array_pop($listTarget); $countCurr = count($listCurr); $countTarget = count($listTarget); $i=0; while ($i<$countCurr && $i<$countTarget) { if ($listCurr[$i] != $listTarget[$i]) break; ++$i; } $relPath = ""; for ($j = $i; $j < $countCurr; ++$j) $relPath.="../"; for ($j=$i; $j<$countTarget; ++$j) $relPath.=$listTarget[$j]."/"; $relPath.=$targetFile; return $relPath; }基本思路是,找到两个路径的第一个分叉口,然后先从当前路径填足够的"../",然后再缀以目标路径的分叉部分。
最后,修改文件属性列举部分的代码:
$fileExt = strtolower(end(explode(".", $elemName))); $listImgExt = array("bmp", "png", "jpg", "jpeg", "gif", "ico"); if (in_array($fileExt, $listImgExt)) { $viewMode = "image"; $encodedFilePath = getRelativePath($_SESSION["index"], $filePath); } else { $viewMode= "content"; $encodedFilePath = urlencode($filePath); } $info.= "<td><ul class=\"operations\">"; if (is_readable($filePath)) $info.= "<li><a href=\"#\" title=\"view\" onClick=\"onElemAct('$viewMode','$encodedFilePath')\"><img src=\"images/view32.png\" alt=\"\" class=\"tabmenu\"/></a></li>";具体效果如下图:
![](http://s3.51cto.com/wyfs02/M01/59/CB/wKioL1TlNoujZrFcAAZAy4uH1eY594.jpg)
本文出自 “Accplayer的小地方” 博客,请务必保留此出处http://accplaystation.blog.51cto.com/9917407/1614853
相关文章推荐
- PHP服务器文件管理器开发小结(六):使用jQueryUI实现新建、查看和编辑文件
- PHP服务器文件管理器开发小结(三):使用jQuery提交AJAX请求
- PHP服务器文件管理器开发小结(二):版面设计和css
- PHP服务器文件管理器开发小结(八):更多的操作――重命名、移动、删除
- PHP服务器文件管理器开发小结(十):使用jQuery和iframe实现AJAX文件上传
- PHP服务器文件管理器开发小结(五):获取文件属性信息
- PHP服务器文件管理器开发小结(九):jQuery动态表单实现文件下载
- PHP服务器文件管理器开发小结(一):功能规划
- PHP服务器文件管理器开发小结(总结):总结、索引和源代码
- PHP服务器文件管理器开发小结(四):利用SESSION响应文件夹导航
- 微信小程序图片选择、上传到服务器、预览(PHP)实现实例
- 微信小程序图片选择、上传到服务器、预览(PHP)实现实例
- 如何制作一个日活超过1000的应用 (三)服务器开发小结1
- 【iphone开发】从摄像头/相册获取图片,压缩图片,上传服务器小结
- 【iphone开发】ios 从摄像头/相册获取图片,压缩图片,上传服务器小结
- 把图片上传到微信服务器,php开发公众号编辑器
- 【iphone开发】从摄像头/相册获取图片,压缩图片,上传服务器小结
- php向服务器上传文件以及图片预览
- 下载公众号文章中的图片,php开发公众号应用
- PHP之微信JSSDK图片上传预览下载到服务器