【ThinkPHP学习】ThinkPHP结合KindEditor SAE storage上传文件图片
2014-09-02 16:46
507 查看
RT.
最近将我的使用thinkphp开发的项目移植到SAE上,遇到最大的问题就是,文件的上传问题。因为SAE关闭了网站目录的写权限。所以不能够往网站目录中上传文件。
这篇文章介绍了PHP中kindeditor针对SAE storage的修改:
首先,在应用的srotage中,增加一个domain,如果有需要,可以在该domain下新建一个文件夹,之后要保存文件到该文件夹目录下,可以通过第二个参数$file_name中在文件名前面添加文件夹名称来控制,如果没有该文件夹,storage会自动创建该文件夹。
接下来,将kindeditor/php/upload_json.php中的内容替换为下面的内容,可以兼容普通的虚拟主机或者是SAE环境
最近将我的使用thinkphp开发的项目移植到SAE上,遇到最大的问题就是,文件的上传问题。因为SAE关闭了网站目录的写权限。所以不能够往网站目录中上传文件。
这篇文章介绍了PHP中kindeditor针对SAE storage的修改:
首先,在应用的srotage中,增加一个domain,如果有需要,可以在该domain下新建一个文件夹,之后要保存文件到该文件夹目录下,可以通过第二个参数$file_name中在文件名前面添加文件夹名称来控制,如果没有该文件夹,storage会自动创建该文件夹。
接下来,将kindeditor/php/upload_json.php中的内容替换为下面的内容,可以兼容普通的虚拟主机或者是SAE环境
<?php /** * KindEditor PHP * Giant Chan 2014-9-2 * */ require_once 'JSON.php'; if(isset($_SERVER['HTTP_APPNAME'])) $issae = true; //是否新浪云平台 else $issae = false; $domain = 'public'; //图片domain名称,这里要替换成你用来存储kindeditor上传文件domain名称 //文件保存目录路径 $save_path = '../attached/'; //文件保存目录URL $save_url = '../attached/'; //定义允许上传的文件扩展名 $ext_arr = array('gif', 'jpg', 'jpeg', 'png', 'bmp'); //最大文件大小 $max_size = 1000000; //有上传文件时 if (empty($_FILES) === false) { //原文件名 $file_name = $_FILES['imgFile']['name']; //文件类型 $file_type = $_FILES['imgFile']['type']; //服务器上临时文件名 $tmp_name = $_FILES['imgFile']['tmp_name']; //文件大小 $file_size = $_FILES['imgFile']['size']; //检查文件名 if (!$file_name) { alert("请选择文件。"); } //检查目录 if(!$issae) { if (@is_dir($save_path) === false) { alert("上传目录不存在。"); } //检查目录写权限 if (@is_writable($save_path) === false) { alert("上传目录没有写权限。"); } } //检查是否已上传 if (@is_uploaded_file($tmp_name) === false) { alert("临时文件可能不是上传文件。"); } //检查文件大小 if ($file_size > $max_size) { alert("上传文件大小超过限制。"); } //获得文件扩展名 $temp_arr = explode(".", $file_name); $file_ext = array_pop($temp_arr); $file_ext = trim($file_ext); $file_ext = strtolower($file_ext); //检查扩展名 if (in_array($file_ext, $ext_arr) === false) { alert("上传文件扩展名是不允许的扩展名。"); } //下面用来限制上传的文件类型,如果你没有需要可以注释掉 //if($file_type!='image/gif'&&$file_type!='image/pjpeg'&&$file_type!='image/x-png'&&$file_type!='image/jpg'){ // alert("只允许上传gif | jpg | png 格式的图片。"); // } //新文件名 $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext; //移动文件 $file_path = $save_path . $new_file_name; if(!$issae) { //这里是在非SAE环境下执行的保存文件代码 if (move_uploaded_file($tmp_name, $file_path) === false) { alert("上传文件失败。"); } @chmod($file_path, 0644); $file_url = $save_url . $new_file_name; } else {//这里是在SAE环境下执行的保存文件代码 $s = new SaeStorage(); $r = $s->upload( $domain , './Editor/'.$new_file_name , $tmp_name); //其中,第二个参数的Editor是在domain下新建一个Editor的文件夹,并将内容存储到该文件夹下 if(!$r) alert("新浪云平台上传文件失败,请检查domain设置是否正确。"); $file_url = $s->getUrl( $domain , './Editor/'.$new_file_name); //同理,如果你设置了Editor文件夹,必须要在存储url的时候加上Editor,如果没有,可以去掉Editor } header('Content-type: text/html; charset=UTF-8'); $json = new Services_JSON(); echo $json->encode(array('error' => 0, 'url' => $file_url)); exit; } function alert($msg) { header('Content-type: text/html; charset=UTF-8'); $json = new Services_JSON(); echo $json->encode(array('error' => 1, 'message' => $msg)); exit; } ?>
相关文章推荐
- Kindeditor+web.py+SAE Storage 实现文件上传 - 开源中国社区
- 【ThinkPHP学习】ThinkPHP upload与SAE storage结合,实现文件上传
- thinkphp结合KindEditor 上传图片的时候出现“\”导致图片不能正常显示,
- Kindeditor+web.py+SAE Storage 实现文件上传 - 开源中国社区
- SAE 版Thinkphp 加入xheditor 图片上传
- 解决kindeditor上传图片、文件的错误
- 解决kindeditor上传图片、文件的错误
- sae-django 使用storage服务实现文件上传保存
- ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
- kindeditor在sae上传文件修改,适合php
- SAE上传普通文件、图片、视频、音乐(持续更新)
- 解决kindeditor上传图片、文件的错误。
- KIndEditor的JSP文件、图片上传的实现
- 解决kindeditor上传图片、文件的错误。
- SAE上传文件到storage
- kindeditor在sae上传文件修改,适合php
- KindEditor4 struts2 jsp 本地图片或文件上传
- Java学习—— 用 文件,文件名 ,文件流 转 字节 用于上传图片
- iframe+ajaxSubmit结合--续篇(判断图片(文件)大小,上传图片,验证码刷新)
- 在sae中,怎么将图片上传到storage的二级目录的代码?