百度BAE使用ueditor 上传图片

研究BAE 也有一段时间了,但一直无法解决BAE 上传图片的问题。

在阅读了

http://blog.csdn.net/auver/article/details/10103789

http://www.thinkphp.cn/topic/5825.html

之后,经过一小段时间的修改,终于配置成功。

  1 <?php
  2     
  3 
  4     /**
  5      * Created by JetBrains PhpStorm.
  6      * User: taoqili
  7      * Date: 12-7-18
  8      * Time: 上午10:42
  9      */
 10     header("Content-Type: text/html; charset=utf-8");
 11     error_reporting(E_ERROR | E_WARNING);
 12     date_default_timezone_set("Asia/chongqing");
 13     include "Uploader.class.php";
 14     //上传图片框中的描述表单名称,
 15     $title = htmlspecialchars($_POST['pictitle'], ENT_QUOTES);
 16     $path = htmlspecialchars($_POST['dir'], ENT_QUOTES);
 17     $globalConfig = include( "config.php" );
 18     $imgSavePathConfig = $globalConfig[ 'imageSavePath' ];
 19 
 20     //获取存储目录
 21     if ( isset( $_GET[ 'fetch' ] ) ) {
 22 
 23         header( 'Content-Type: text/javascript' );
 24         echo 'updateSavePath('. json_encode($imgSavePathConfig) .');';
 25         return;
 26 
 27     }
 28 
 29     //上传配置
 30     $config = array(
 31         "savePath" => $imgSavePathConfig,
 32         "maxSize" => 1000, //单位KB
 33         "allowFiles" => array(".gif", ".png", ".jpg", ".jpeg", ".bmp")
 34     );
 35 
 36     if ( empty( $path ) ) {
 37 
 38         $path = $config[ 'savePath' ][ 0 ];
 39 
 40     }
 41 
 42     //上传目录验证
 43     if ( !in_array( $path, $config[ 'savePath' ] ) ) {
 44         //非法上传目录
 45         echo '{"state":"\u975e\u6cd5\u4e0a\u4f20\u76ee\u5f55"}';
 46         return;
 47     }
 48 
 49     $config[ 'savePath' ] = $path . '/';
 50 
 51     //生成上传实例对象并完成上传
 52     $up = new Uploader("upfile", $config);
 53 
 54     /**
 55      * 得到上传文件所对应的各个参数,数组结构
 56      * array(
 57      *     "originalName" => "",   //原始文件名
 58      *     "name" => "",           //新文件名
 59      *     "url" => "",            //返回的地址
 60      *     "size" => "",           //文件大小
 61      *     "type" => "" ,          //文件类型
 62      *     "state" => ""           //上传状态,上传成功时必须返回"SUCCESS"
 63      * )
 64      */
 65     $info = $up->getFileInfo();
 66 
 67     // 上传成功后移动到bcs
 68     function getFileDomain($bucket){
 69         if(!IS_BAE) return '';
 70         return 'http://'.HTTP_BAE_ENV_ADDR_BCS.'/'.strtolower($bucket);
 71     }
 72     function getFileExt($file_name){    // 获取文件扩展名
 73         $extend =explode("." , $file_name);
 74         $va=count($extend)-1;
 75         return $extend[$va];
 76     }
 77     $tempFileName = tempnam(sys_get_temp_dir(),'tp_');
 78     $sourceFileName = $info["url"];
 79     file_put_contents($tempFileName, file_get_contents($sourceFileName));
 80     $fileInfo = pathinfo($sourceFileName);
 81     $srcFile =  $tempFileName;
 82     $ext = getFileExt($sourceFileName);
 83     $fileExt = '.'.$ext; 
 84     $bucket='你自己的bucket';
 85     $savePath = '/'.date('Ymd').'/'. uniqid().$fileExt;
 86     try{
 87         $bcs=new BaiduBCS();
 88         $response=$bcs->create_object($bucket, $savePath,$srcFile,array('acl'=>BaiduBCS::BCS_SDK_ACL_TYPE_PUBLIC_READ));
 89         if($response->isOK()){
 90             $srcFile = getFileDomain($bucket) . $savePath;
 91             //echo "<img src='{$srcFile}' /><br/>{$savePath}";
 92         }
 93     }catch(Exception $e){
 94         die('failed');
 95     }
 96     $info["url"] = $srcFile;  // 获取存储在bcs中文件的url,这个也是最后的url
 97     /**
 98      * 向浏览器返回数据json数据
 99      * {
100      *   'url'      :'a.jpg',   //保存后的文件路径
101      *   'title'    :'hello',   //文件描述,对图片来说在前端会添加到title属性上
102      *   'original' :'b.jpg',   //原始文件名
103      *   'state'    :'SUCCESS'  //上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
104      * }
105      */
106 
107 echo "{'url':'" . $info["url"] . "','title':'" . $title . "','original':'" . $info["originalName"] . "','state':'" . $info["state"] . "'}";
108                    

特别注意的是,既然这里返回的是一个完整的url,在ue的配置中就需要配置 “图片修正地址”

配置修改如下:

1         UEDITOR_HOME_URL : URL
2 
3         //图片上传配置区
4         ,imageUrl:URL+"php/imageUp.php"             //图片上传提交地址
5         ,imagePath: " "                             //图片修正地址,引用了fixedImagePath,如有特殊需求,可自行配置
6         //,imagePath:URL + "php/"                   //图片修正地址,引用了fixedImagePath,如有特殊需求,可自行配置
7         //,imageFieldName:"upfile"                  //图片数据的key,若此处修改,需要在后台对应文件修改对应参数

图片修正地址中是一个空格,而不是空。

 

欢迎交流。

posted @ 2013-12-03 10:10  r3call  阅读(1329)  评论(0编辑  收藏  举报