ホームページ >php教程 >php手册 >UEditorエディターでのリモート画像アップロードの失敗の解決策

UEditorエディターでのリモート画像アップロードの失敗の解決策

WBOY
WBOYオリジナル
2016-06-13 11:58:28752ブラウズ

リモート画像アップロードは非常に興味深いもので、たとえば、別の Web サイトからファイルをコピーした場合、テキストに画像が含まれている場合、エディターが自動的に画像を抽出してアップロードするため、リモートについて心配する必要はありません。画像が無効であるため、ローカルで参照できません。

調査の結果、リモート画像アップロードの操作ページは getRemoteImage.php であることが判明しました。開いた後、まず savePath を設定します。混乱を避け、管理を容易にするために、異なるユーザーが異なるディレクトリに保存する必要があるためです。

変更されたコード:

コピーコード コードは次のとおりです:


//リモート画像キャプチャ設定
if(isset($_SESSION['admin'])){
$ myPath = 'http://www.jb51.net/../dofiles/ueditorUpload/admin/'.$_SESSION['admin']['id'].'/'
}else if(isset( $_SESSION ['user'])){
$myPath = 'http://www.jb51.net/../dofiles/ueditorUpload/user/'.$_SESSION['user']['id'] .' /';
}else{
$myPath = 'http://www.jb51.net/../dofiles/ueditorUpload/unkonw/';
$config = 配列(
"savePath" => $myPath , //パスの保存
"allowFiles" => array( ".gif" , ".png" , ".jpg" , ".jpeg" , ".bmp" ), // ファイルの許容形式
"maxSize" => 3000 // ファイル サイズ制限、単位 KB
);


次に、 UEditor で問題が発生します。および画像のアップロードはすべて、Uploader.class.php PHP クラスを通じて操作されますが、リモート画像のアップロードはそうではありません。

85 行目で、パスの作成時に mkdir が使用されただけであることがわかりました。mkdir は階層パスを作成できないため、パスが存在しない場合はリモート イメージがコピーされます。

問題への対処が簡単であることがわかっているので、最初にファイル ディレクトリを作成するためにループする関数を作成します (以前に作成したので、ここではそれを直接使用します)。


コードをコピー コードは次のとおりです:

//階層フォルダーを継続的に作成します
function recursive_mkdir($folder){
$folder = preg_split ( "/[\\/]/" , $folder );
$mkfolder = ''
for($i=0; isset($folder[$i]) ; $i ){
if(!strlen(trim($folder[$i]))){
続行;
$mkfolder .= $folder if(!is_dir($ mkfolder)){
mkdir("$mkfolder",0777)
}
$mkfolder .= DIRECTORY_SEPARATOR
}
}

次に 85 行を変更します:


コードをコピー

コードは次のとおりです: //保存場所を作成$savePath = $config[ 'savePath ' ];

if ( !file_exists( $savePath ) ) {

recursive_mkdir($savePath)
//mkdir( "$savePath" , 0777 );
}


この場合は問題ありません。

この問題は、修正を希望して Baidu 関係者にも提出されました。


テストした UEditor のバージョンは 1.2.3.0 です。以前のバージョンに関連する問題がある場合は、修正アイデアに従って修正することで解決できるはずです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。