使用PHP上传后将文件复制到第二个目录

时间:2012-10-13 18:55:33

标签: php copy imagick

我正在尝试上传图像,同时将文件复制到另一个目录,我希望将其创建为缩略图大小的图像。

这个想法是基本上构建一个动态相册,因此输出是一个图像循环,每次有人上传到它时都会自动更新。

我可以上传的主图像没有任何问题,输出循环也很容易。但我希望能够在上传的同时复制和缩略图像,并将文件,文件名和信息插入目录和数据库。

我一直在尝试在文件上传后运行副本,然后我打算测试一个Imagick以拇指第二个img。但我还没有到处测试拇指,因为我的副本不起作用。

如果所有其他方法都失败了,我将只需要使用Timthumb,但我希望在输出页面上加载速度要慢得多。 Timtumb有没有人有任何问题?那将是一件容易的事情。 :)

基本上我有这个

if(move_uploaded_file($_FILES['thefile']['tmp_name'], 'uploads/' . $_FILES['thefile']['name'])) {
        $photo_filename = $_FILES['thefile']['name'];
        $query = "INSERT INTO gallery_photos (
                    photo_filename
                ) VALUES (
                    '{$photo_filename}'
                )";
        $result = mysql_query($query, $connection);
        $path = 'http://mydomain.com/directory/uploads/';
        $fpath = $path.$photo_filename;
        $dest = 'http://mydomain.com/directory/thumbs/';
        $fdest = $dest.$photo_filename;
        copy($fpath, $fdest);
        if ($result) {
            redirect_to("new_photo.php?upload=4");
        } else {
            echo "<p>Dude. Something went wrong!</p>";
            echo "<p>" . mysql_error() . "</p>";
        }
    }

我尝试了几种变体,我将副本放在SQL及以下,我也试过没有$ path / $ dest变量我也尝试过它没有完整路径。但它们都没有奏效。

主要照片正在上传到uploads文件夹。它只是没有被复制。数据库正在更新,不用担心。

任何帮助将不胜感激。

干杯

3 个答案:

答案 0 :(得分:1)

copy()命令需要两个FILESYSTEM参数。您正在发送HTTP URL。

实际上,它确实通过包装器支持URL,但并非所有包装器都支持覆盖文件 - 而HTTP就是其中之一。另一方面,我绝不会尝试使用网络流量来复制本地文件。

答案 1 :(得分:1)

我认为你的复制过程应该是这样的

$path = __DIR__; // Full Path to site NOT URL 
$fpath = $path . "/uploads/" . $photo_filename;
$fdest = $path . "/thumbs/" . $photo_filename;

if (! is_file($fpath))
    trigger_error("File Does not exist");

if (!is_writable(dirname($fdest)))
    trigger_error("Can not Write to Destination");

copy($fpath, $fdest);

答案 2 :(得分:0)

这对我有用:

我使用dirname( FILE )代替 DIR

$ path = dirname( FILE );