0

假设我有一个图片网址

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,将其上传到我的服务器,然后将该图像重命名为我想要的名称,同时保持扩展的完整性。

4

5 回答 5

1

首先-您需要检查您的网络服务器是否可以从另一台服务器访问 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));
于 2012-09-26T20:14:39.883 回答
0
 <?php
 $url = 'http://www.bla.org/img/derp.jpg';
 $extension = end(explode('.', $url));
 file_put_contents('/tmp/image.'.$extension, file_get_contents($url));
于 2012-09-26T20:06:39.990 回答
0

$filename = substr($url, strrpos($url, '.'));

于 2012-09-26T20:07:42.997 回答
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));
于 2012-09-26T20:13:33.527 回答
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'];
于 2012-09-26T20:16:44.027 回答