0

画像の URL があるとします。

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にさらにコンテンツがある場合、これは機能しますか?

たとえば、次の代わりに: url here/content/image.png 次のようになります: url here/content/stuff/images/image.png

私は基本的に、画像への URL を受け取り、それをサーバーにアップロードし、その画像の名前を必要な名前に変更しながら、拡張子をそのまま維持するユニバーサル関数を作成しようとしています。

4

5 に答える 5

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));
于 2012-09-26T20:14:39.883 に答える
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 に答える
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
 <?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 に答える