ホームページ > バックエンド開発 > PHPチュートリアル > file_get_contents は file:/// のようなファイルをサーバーに移動します

file_get_contents は file:/// のようなファイルをサーバーに移動します

WBOY
リリース: 2016-06-23 14:39:29
オリジナル
1089 人が閲覧しました

この投稿は、2013-12-12 17:39:38 に molaifeng によって最終的に編集されました

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:// で始まるファイルに移動します

もう一度調整したところ、サーバー上でローカルの写真がまったく読み込めないことがわかりました。何か良い方法はありませんか?
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート