bae中UEditor上传图片到bcs

在bae中安装Wordpress后,再装上UEditor。即使Wordpress设置好了百度云存储bucket,但因为UEditor不使用Wordpress配置的上传地址,包括从UEditor官网下载的适用于Wordpress的版本也是如此。而bae只提供代码部署,虽然也提供本地文件写入,但如果使用UEditor内的上传方式,图片只能保证暂时可以访问。过一段时间后就不一定能访问。本人百度了以后,发现也没有现成的解决方案,故自己解决了这个问题。

需要修改的文件主要是图片上传的后台 ueditor\php\imageUp.php 和 附件上传的后台 fileUp.php

在这两个文件的最后位置,即

 

[php][/php] view plaincopy

  1. if ( $state == “SUCCESS” )
  2.     {
  3.         $tmp_file = $file[ “name” ];
  4.         $fileName = $path . rand( 1 , 10000 ) . time() . strrchr( $tmp_file , ‘.’ );
  5.         $result = move_uploaded_file( $file[ “tmp_name” ] , $fileName );
  6.         if ( !$result ) {
  7.             $state = “未知错误”;
  8.         }

这里的意思是UEditor已经上传文件了(直接写入的方式),$fileName就是已经上传好的文件的相对UEditor插件位置的路径 。然后我们要把这个文件再转存到云存储上,然后返回保存在云存储中的http路径(因此还要修改前台的editor_config.js中路径的修正变量)。

 

我们在这段代码下面插入

 

[php][/php] view plaincopy

  1. //尝试将保存位置移动到云存储
  2. $bcs_ak = ”; //填入您申请bcs服务时候的ak和sk
  3. $bcs_sk = ”;
  4. $bcs_host = ‘bcs.duapp.com’;
  5. $baiduBCS = new BaiduBCS($bcs_ak, $bcs_sk, $bcs_host);
  6. $bucket = ;//填入您申请bcs的bucket名称
  7. //object name
  8. $object = ‘/’ . $filename; //object必须以‘/’开头,这里是设置文件相对你的bucket的路径。因为上面的$fileName就是upload/*.jpg的形式,所以一般不用修改
  9. //将图片存入云存储
  10. $response = $baiduBCS->create_object($bucket, $object, $bcs_url);
  11. //得到已存入云存储图片的url
  12. $fileName= $baiduBCS->generate_get_object_url($bucket,$object);

注意,这时候的$fileName就是一个前面带上http的文件路径了,而不是相对路径。因此在editor_config.js中,修改imagePath参数为一个空格的字符串(不是为空)。

 

 

[javascript][/javascript] view plaincopy

  1. ,imageUrl:URL+”php/imageUp.php”             //图片上传提交地址
  2. ,imagePath: ” ”                     //图片修正地址,引用了fixedImagePath,如有特殊需求,可自行配置

 

 

fileUp也按类似的方法修改。

 

最后,注意我们并没有修改图片的在线管理的后台。所以如果你继续使用在线管理,插入的图片并不是云存储里的。所以,在dialogs\image的相关文件里把文件管理注释掉吧

标签