假设我有一个图片网址
http://website.com/content/image.png
我想获取该图像并将其放在我自己的服务器中,但我想事先将其重命名,以便将该位置存储在数据库中。
我使用以下代码:
$url = 'http://website.com/content/image.png';
/* Extract the filename */
$filename = substr($url, strrpos($url, '/') + 1);
/* Save file wherever you want */
file_put_contents('upload/'.$filename, file_get_contents($url));
如果我想将文件重命名为全新的文件,但保留扩展程序,我该如何实现?如果网址中有更多内容,这也会有效吗?
例如,而不是: url here / content / image.png 这将是: url here / content / stuff / images / image.png
我基本上是在尝试编写一个通用函数,它将URL映射到图像,将其上传到我的服务器,并将该图像重命名为我想要的图像,同时保持扩展名。
答案 0 :(得分:1)
首先 - 您需要检查您的Web服务器是否可以访问其他服务器的URL。
第二 - 假设你可以:
$url = 'http://website.com/content/image.png';
$extension = end(explode(".", $url));
$filename = "the_filename_you_want.".$extension;
file_put_contents('upload/'.$filename, file_get_contents($url));
答案 1 :(得分:0)
<?php
$url = 'http://www.bla.org/img/derp.jpg';
$extension = end(explode('.', $url));
file_put_contents('/tmp/image.'.$extension, file_get_contents($url));
答案 2 :(得分:0)
$filename = substr($url, strrpos($url, '.'));
答案 3 :(得分:0)
您需要pathinfo:
$url = 'http://website.com/content/image.png';
$path = parse_url($url, PHP_URL_PATH);
/* Extract the filename and extension */
$filename = pathinfo($path, PATHINFO_FILENAME);
$extension = pathinfo($path, PATHINFO_EXTENSION);
/* Save file wherever you want */
file_put_contents('upload/' . $filename . '.' . $extension, file_get_contents($url));
答案 4 :(得分:0)
您可能希望查看parse_url()
函数以获取各种URL组件。
像:
$url_parts = parse_url($url);
$uri = $url_parts['path'];
然后使用pathinfo()
将URI的组件分解为路径,文件名,扩展名等。
$uri_info = pathinfo($uri);
$dir_name = $uri_info['dirname'];
$file_name = $uri_info['filename'];
$file_basename = $uri_info['basename'];
$file_extension = $uri_info['extension'];