1

URL からサーバー上の相対パスに画像をランダムなファイル名でコピーし、最終的な URL をエコー バックするコードを作成しようとしています。私には2つの問題があります:

  1. 相対パスでは機能しません。パスを宣言しない場合、関数は機能しますが、画像は PHP ファイルの同じフォルダーに保存されます。フォルダーを指定してもエラーは返されませんが、サーバーに画像が表示されません。
  2. echo 関数は常に空の文字列を返します。

私はクライアント側のプログラマーなので、PHP は私のものではありません...助けていただければ幸いです。

コードは次のとおりです。

<?php

$url = $_POST['url'];
$dir = 'facebook/';
$newUrl;

copy($url, $dir . get_file_name($url));

echo $dir . $newUrl;

function get_file_name($copyurl) {
    $ext = pathinfo($copyurl, PATHINFO_EXTENSION);
    $newName = substr(md5(rand()), 0, 10) . '.' . $ext;
    $newUrl = $newName;
    return $newName;
}

編集:

誰かが興味を持っている場合の修正コードは次のとおりです。

<?php

$url = $_POST['url'];
$dir = 'facebook/';
$newUrl = "";

$newUrl = $dir . generate_file_name($url);

$content = file_get_contents($url);
$fp = fopen($newUrl, "w");
fwrite($fp, $content);
fclose($fp);

echo $newUrl;

function generate_file_name($copyurl) {
    $ext = pathinfo($copyurl, PATHINFO_EXTENSION);
    $newName = substr(md5(rand()), 0, 10) . '.' . $ext;
    return $newName;
}
4

2 に答える 2

4

ここで答える

どちらかを使用

copy('http://www.google.co.in/intl/en_com/images/srpr/logo1w.png', '/tmp/file.jpeg');

また

//Get the file
$content = file_get_contents("http://www.google.co.in/intl/en_com/images/srpr/logo1w.png");
//Store in the filesystem.
$fp = fopen("/location/to/save/image.jpg", "w");
fwrite($fp, $content);
fclose($fp);
于 2013-05-16T09:49:30.170 に答える
2

file_get_contentsファイルをダウンロードするには、または curl を使用する必要があります。また$newUrl、関数内はローカルであり、この割り当てはグローバル変数の値を変更しないため、$newUrl関数の外では見ることができないことに注意してください。そして、$newUrl;3行目の文は意味がありません。

于 2013-05-16T09:52:10.053 に答える