1

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

  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;没有任何意义。

于 2013-05-16T09:52:10.053 回答