百度BAE使用ueditor 上傳圖片

研究BAE 也有一段時間了,但一直沒法解決BAE 上傳圖片的問題。javascript

在閱讀了php

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

前端

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

以後,通過一小段時間的修改,終於配置成功。thinkphp

  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的配置中就須要配置 「圖片修正地址」json

配置修改以下:數組

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,若此處修改,須要在後臺對應文件修改對應參數

圖片修正地址中是一個空格,而不是空。瀏覽器

 

歡迎交流。fetch

相關文章
相關標籤/搜索