从网址命名困境上传图片

时间:2012-09-26 20:05:00

标签: php image upload

假设我有一个图片网址

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映射到图像,将其上传到我的服务器,并将该图像重命名为我想要的图像,同时保持扩展名。

5 个答案:

答案 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'];