研究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