ckeditor エディターを使用して Word ファイル内の画像をコピーし、画像アドレスのソース コードがすべて次の形式であることを確認します。 file:/// と書きました。 1 つの方法は、貼り付け時にイベントを登録し、正規表現を使用して類似した画像アドレスに一致させ、それを非同期に php スクリプト ファイルに渡して処理することです。 file_get_contents を使用して画像アドレスを読み取り、file_put_contents を使用して指定されたディレクトリに書き込みます。ローカルでテストされているため、問題ありません。 svn をサーバーに送信してテストしたところ、画像のサイズがすべて 0kb であることがわかりました。後でテストに is_file を使用して false を出力しましたが、ローカルでは file_get_contents がサーバー上のローカル画像を読み取れないためでしょうか。
// 将用户从word文档里粘贴过来的图像先存到本地目录,再改变其地址返回过去 public function tranPic() { // 检测 $_POST = unflip($_POST); $content = strval($_POST['html']); if (!$content) { echo ''; exit; } // 图片存放域名 $imgPath = C('TMPL_PARSE_STRING'); // 图片转存后的路径 $pre = '../Uploads/'; $pic = 'Ueditor/' . date('Ymd', time()) . '/'; mk_dir($pre . $pic); // 正则提取图片 $pattern = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpeg|\.jpg|\.bmp|\.bnp|\.png|\.GIF|\.JPG|\.BMP|\.BNP|\.PNG|\.JPEG]))[\'|\"].*?[\/]?>/"; preg_match_all($pattern, $content, $match); // 把图片地址替换为本项目中的地址 foreach ($match as $key => &$value) { if ($key > 0) { continue; } foreach ($value as $k => $v) { // 获取图片后缀,主要图片的前五个字符是file: if (substr($match[1][$k], 0, 5) == 'file:') { $ext = pathinfo($match[1][$k], PATHINFO_EXTENSION); $data = file_get_contents($match[1][$k]); $filename = uniqid() . '.' . $ext; file_put_contents($pre . $pic . $filename, $data); $content = str_replace($v, str_replace($match[1][$k], $imgPath['../Uploads/'] . $pic . $filename, $v), $content); } } } echo $content; }
はい、file_get_contents はサーバー上のローカル画像を読み取ることができません
ただし、ローカル サーバー経由で転送することを検討できます
次に、ローカル サーバー経由で転送したい場合は、次のようにすることができます何か他の方法はありますか? ! !
メソッドを変更して、php でcurl postを使用してファイルをアップロードしましたが、エラーリターンコードは26でした。
ajax post submitを試してください。
うまくいきませんでした。最終的に、phpがサーバー上で読み込めないことがわかりました。 file:// で始まるファイルに移動します
もう一度調整したところ、サーバー上でローカルの写真がまったく読み込めないことがわかりました。何か良い方法はありませんか?