Heim  >  Artikel  >  Backend-Entwicklung  >  file_get_contents把类似file:///文件移到服务器上,该如何处理

file_get_contents把类似file:///文件移到服务器上,该如何处理

WBOY
WBOYOriginal
2016-06-13 11:48:011254Durchsuche

file_get_contents把类似file:///文件移到服务器上
    使用ckeditor编辑器复制word文件里的图片,查看图片地址源码皆为file:///这种形式,后来便写了一个方法,在粘贴的时候注册个事件,用正则匹配类似的图片地址,再异步传到php脚本文件处理,处理方法逻辑为,使用file_get_contents读到图片地址,再使用file_put_contents写入指定目录,由于是在本地测试,没问题。svn到服务器,测试了下,发现图片都是0kb大小,后来使用is_file做测试,打印false,而在本地则是true,是不是file_get_contents在服务器读不到本地的图片。

<br />    // 将用户从word文档里粘贴过来的图像先存到本地目录,再改变其地址返回过去<br />    public function tranPic() {<br /><br />        // 检测<br />        $_POST = unflip($_POST);<br />        $content = strval($_POST['html']);<br />        if (!$content) {<br />            echo '';<br />            exit;<br />        }<br /><br />        // 图片存放域名<br />        $imgPath = C('TMPL_PARSE_STRING');<br /><br />        // 图片转存后的路径<br />        $pre = '../Uploads/';<br />        $pic = 'Ueditor/' . date('Ymd', time()) . '/';<br />        mk_dir($pre . $pic);<br /><br />        // 正则提取图片<br />        $pattern = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpeg|\.jpg|\.bmp|\.bnp|\.png|\.GIF|\.JPG|\.BMP|\.BNP|\.PNG|\.JPEG]))[\'|\"].*?[\/]?>/";<br />        preg_match_all($pattern, $content, $match);<br /><br />        // 把图片地址替换为本项目中的地址<br />        foreach ($match as $key => &$value) {<br /><br />            if ($key > 0) {<br />                continue;<br />            }<br /><br />            foreach ($value as $k => $v) {<br /><br />                // 获取图片后缀,主要图片的前五个字符是file:<br />                if (substr($match[1][$k], 0, 5) == 'file:') {<br />                    $ext = pathinfo($match[1][$k], PATHINFO_EXTENSION);<br />                    $data = file_get_contents($match[1][$k]);<br />                    $filename = uniqid() . '.' . $ext;<br />                    file_put_contents($pre . $pic . $filename, $data);<br />                    $content = str_replace($v, str_replace($match[1][$k], $imgPath['../Uploads/'] . $pic . $filename, $v), $content);<br />                }<br />            }<br />        }<br /><br />        echo $content;<br />    }<br />

------解决方案--------------------
是的, file_get_contents在服务器读不到本地的图片
但你可以考虑经本地服务器中转

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn