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

PHP将图像从url复制到服务器并回显最终url,php,copy,echo,Php,Copy,Echo,我正在尝试编写一个代码,用一个随机文件名将图像从URL复制到服务器上的相对路径,并回显最终URL。 我有两个问题: 它不适用于相对路径。如果我没有声明路径,那么函数可以工作,但是图像保存在PHP文件的同一文件夹中。如果我指定了文件夹,它不会返回任何错误,但我在服务器上看不到图像。 echo函数始终返回空字符串。 我是一个客户端程序员,所以PHP不是我的东西。。。我将感谢任何帮助 代码如下: <?php $url = $_POST['url']; $dir = 'facebook/'; $

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

它不适用于相对路径。如果我没有声明路径,那么函数可以工作,但是图像保存在PHP文件的同一文件夹中。如果我指定了文件夹,它不会返回任何错误,但我在服务器上看不到图像。 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;
}
任用

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

任用

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

您应该使用file\u get\u contents或curl来下载文件。还要注意的是,函数中的$newUrl是本地的,并且这个赋值不会改变全局$newUrl变量的值,所以在函数外部看不到它。以及$newUrl语句;第三行没有任何意义

您应该使用file\u get\u contents或curl来下载文件。还要注意的是,函数中的$newUrl是本地的,并且这个赋值不会改变全局$newUrl变量的值,所以在函数外部看不到它。以及$newUrl语句;第三行没有任何意义