PHP将映像从url复制到服务器并回显最终的url

时间:2013-05-16 09:46:23

标签: php copy echo

我正在尝试编写一个代码,该代码将使用随机文件名将图像从URL复制到我服务器上的相对路径,并回显最终的URL。 我有两个问题:

  1. 它不适用于相对路径。如果我没有声明路径,该函数可以正常工作,但图像保存在PHP文件的同一文件夹中。如果我指定了该文件夹,它不会返回任何错误,但我在服务器上看不到该图像。
  2. echo函数始终返回空字符串。
  3. 我是客户端程序员,所以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;
    }
    

2 个答案:

答案 0 :(得分:4)

Answer Here

使用

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);

答案 1 :(得分:2)

您应该使用file_get_contents或curl来下载文件。另请注意,函数内的$newUrl是本地的,并且此赋值不会更改全局$newUrl变量的值,因此您无法在函数外部看到它。第3行中的$newUrl;语句没有任何意义。