kindeditor 本地图片文件上传

一、文件或图片上传


try {
 if (!is_dir($this->uploadPath)) {
     throw new InvalidArgumentException(‘files.ourats.com还没搭建?‘);
 }
 if (!is_writable($this->uploadPath)) {
     throw new InvalidArgumentException(‘上传文件夹不可写‘);
 }
 // 如果该公司目录不存在,则创建之
 $ns = new Zend_Session_Namespace(‘DB‘);
 $cid = $ns->cid;
 $cidDirPath = $this->uploadPath . $cid;
 if (!is_dir($cidDirPath)) {
     $old = umask(0);
     if (!mkdir($cidDirPath, 0777)) {
         throw new InvalidArgumentException("创建$cid文件夹失败");
     }
     umask($old);
 }
 // 处理上传文件
 if (!isset($_GET[‘dir‘]) || ($_GET[‘dir‘] != ‘image‘ && $_GET[‘dir‘] != ‘file‘)) {
     throw new InvalidArgumentException(‘无效的参数‘);
 }
 if (!isset($_FILES[‘imgFile‘])) {
     throw new InvalidArgumentException(‘无效的参数‘);
 }
 if ($_FILES[‘imgFile‘][‘error‘] != UPLOAD_ERR_OK) {
     throw new InvalidArgumentException(‘上传失败‘);
 }
 // 如果文件名中有/\,则不接受, .和..也不行
 $filename = trim($_FILES[‘imgFile‘][‘name‘]);
 $len = strlen($filename);
 if ($len == 0 || $len > 255) {
     throw new InvalidArgumentException(‘无效的参数‘);
 }
 if (strpos($filename, ‘/‘) !== false
 || strpos($filename, ‘\\‘) !== false
 || $filename == ‘.‘
 || $filename == ‘..‘
 ) {
     throw new InvalidArgumentException(‘无效的参数‘);
 }
 // 如果文件已存在,则不接受
 $dstPath = $cidDirPath . ‘/‘ . $filename;
 if (file_exists($dstPath)) {
     throw new InvalidArgumentException(‘文件已经存在‘);
 }
 // 由于图片需要显示出来,所以必须严格验证
 $ext = explode(‘.‘, $filename);
 $ext = strtolower(array_pop($ext));
 $mimeTypes = array(
     ‘jpg‘ => ‘image/jpeg‘,
     ‘png‘ => ‘image/png‘,
     ‘gif‘ => ‘image/gif‘
 );
 if (isset($mimeTypes[$ext])) {
     $finfo = new finfo(FILEINFO_MIME_TYPE);
     $type = $finfo->file($_FILES[‘imgFile‘][‘tmp_name‘]);
     if ($type != $mimeTypes[$ext]) {
         throw new InvalidArgumentException(‘上传文件类型错误‘);
     }
     $_GET[‘dir‘] = ‘image‘;
 } elseif ($_GET[‘dir‘] == ‘image‘) {
     // 如果上传的文件不是图片,却又指明了要上传图片,则报错
     throw new InvalidArgumentException(‘上传图图片类型不支持‘);
 }
 if ($_GET[‘dir‘] == ‘image‘) {
     if ($_FILES[‘imgFile‘][‘size‘] > $this->maxImgSize) {
         throw new InvalidArgumentException(‘上传图片尺寸超过最大限制‘);
     }
 } else {
     if ($_FILES[‘imgFile‘][‘size‘] > $this->maxFileSize) {
         throw new InvalidArgumentException(‘上传文件尺寸超过最大限制‘);
     }
 }
 // 完成上传
 if (!move_uploaded_file($_FILES[‘imgFile‘][‘tmp_name‘], $dstPath)) {
    throw new InvalidArgumentException(‘上传失败‘);
 }
 $filename = $_FILES[‘imgFile‘][‘name‘];
 $args = array($this->token, $cid, $filename);
 sort($args, SORT_STRING);
 $sign = sha1(implode(‘‘, $args));
 $url = $this->filesUrl . ‘?cid=‘ . $cid . ‘&file=‘ . urlencode($filename) . ‘&sign=‘ . $sign;
 $res = array(‘error‘ => 0, ‘url‘ => $url, ‘filename‘ => $filename);
 } catch (InvalidArgumentException $e) {
     $res = array(‘error‘ => 1, ‘message‘ => $e->getMessage());
 } catch (Exception $e) {
     $res = array(‘error‘ => 1, ‘message‘ => ‘未知错误‘);
 }

echo json_encode($res);

二、文件图片的展示[kindeditor中filemanager]


 $ns = new Zend_Session_Namespace(‘DB‘);
 $cid = $ns->cid;
 $baseDir = $this->uploadPath . $cid;

 $imageExts = array(‘jpg‘ => ‘.jpg‘, ‘png‘ => ‘.png‘, ‘gif‘ => ‘.gif‘);
 $onlyImage = $this->getQuery(‘dir‘) == ‘image‘;
 $list = array();
 if (is_dir($baseDir)) {
     $dir = new DirectoryIterator($baseDir);
     foreach ($dir as $fileinfo) {
         if ($fileinfo->isFile()) {
             $isPhoto = isset($imageExts[$fileinfo->getExtension()]);
             if ($onlyImage && !$isPhoto) {
                 continue;
             }
         $filename = $fileinfo->getFilename();
         $args = array($this->token, $cid, $filename);
         sort($args, SORT_STRING);
         $sign = sha1(implode(‘‘, $args));
         $list[] = array(
             ‘uri‘ => ‘cid=‘ . $cid . ‘&file=‘ . urlencode($filename) . ‘&sign=‘ . $sign,
             ‘filename‘ => $filename,
             ‘filesize‘ => $fileinfo->getSize(),
             ‘datetime‘ => date(‘Y-m-d H:i:s‘, $fileinfo->getMTime()),
             ‘is_photo‘ => $isPhoto
         );
     }
 }
 }

if ($list && isset($_GET[‘order‘])) {
     switch ($_GET[‘order‘]) {
     case ‘NAME‘:
         usort($list, function ($a, $b) {
             return strcmp($a[‘filename‘], $b[‘filename‘]);
         });
     break;
     case ‘SIZE‘:
         usort($list, function ($a, $b) {
             if ($a[‘filesize‘] > $b[‘filesize‘]) {
                 return 1;
             } elseif ($a[‘filesize‘] < $b[‘filesize‘]) {
                 return -1;
             }
             return 0;
         });
     break;
     case ‘DATE‘:
         usort($list, function ($a, $b) {
             return strcmp($a[‘datetime‘], $b[‘datetime‘]);
         });
         break;
     }
 }

 echo json_encode(array(
     ‘base_url‘ => $this->filesUrl . ‘?‘,
     ‘file_list‘ => $list
 ));
时间: 2024-10-07 03:05:50

kindeditor 本地图片文件上传的相关文章

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs

将本地PST文件上传到Office 365

最近有几家用户向我询问,本地的PST如何不通过终端的方式,让IT管理员通过后台上传到Office 365指定的用户邮箱.关于这个问题我今天针对 Office 365国际版进行了相关测试,以下是我测试的流程,希望对大家有所帮助. 1. 登录Office 365管理中心,定位到:用户--数据迁移,单击:上载PST文件 2. 在打开的PST上传向导中,点击:添加--上传电子邮件(PST文件),如下图: 3. 在通过网络上载文件对话框中,单击:显示网络上传SAS URL,并复制此URL 4. 点击第2步

SpringMvc MultipartFile 图片文件上传

spring-servlet.xml 1 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> 2 <bean id="multipartResolver" 3 class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 4 <property name="defaultEncoding&qu

Android图片文件上传实例

原文:Android图片文件上传实例 源代码下载地址:http://www.zuidaima.com/share/1550463718132736.htm 支持拍照图片上传和从手机相册中获取图片上传到服务器端的功能 源码截图

js的FileReader实现图片文件上传、预览

js的FileReader实现图片文件上传.预览 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件.使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料:而缺点便是,网页的大小可能会变大.它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用.您的图像文件不能够超过浏览器限定的大小,否则无法读取图像文件.1

SpringMvc + Jsp+ 富文本 kindeditor 进行 图片ftp上传nginx服务器 实现

一:html 原生态的附件上传 二:实现逻辑分析: 1.1.1 需求分析 Common.js 1.绑定事件 2.初始化参数 3.上传图片的url: /pic/upload 4.上图片参数名称: uploadFile 5.返回结果数据类型json 参考文档: http://kindeditor.net/docs/upload.html 返回格式(JSON) 1 //成功时 2 3 { 4 5 "error" : 0, 6 7 "url" : "http://

利用Selenium实现图片文件上传的两种方式介绍

在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当开发直接使用file类型的input实现图片文件的上传时,实例:<input type="file" name=''filename"> 我们可以直接利用Selenium提供的方法实现文件上传,但是因为依赖开发的实现,而且目前实现基本都会利用框架,所以这种实现方式有很

js实现图片文件上传的心得

今天研究一下图片上存的一个实现方法,由于上周没写技术周记,这次一定要写好! 那么问题来了:PHP处理图片上传时要求JQ实现数据的交互,怎么办? 这里涉及到的一个logo上传的需求,根据radio选择是否更新logo,同时form表单将以js事件处理 <div class="comLogo sbox"> <div class="CLheader">公司logo:</div> <div class="ui-imgsel

Ueditor结合七牛云及百度云存储(JAVA版,ueditor-1.4.3)实现图片文件上传

[前言] 之前研究了ueditor直接上传图片文件到七牛云以及百度云存储,见下面两篇文章: http://uikoo9.com/blog/detail/ueditor-for-bcs http://uikoo9.com/blog/detail/ueditor-for-qiniu 另外还有一篇ueditor-1.4.3-jsp的使用教程: http://uikoo9.com/blog/detail/how-to-use-ueditor 今天实现了ueditor可配置选择上传到七牛还是百度还是本地,