0

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

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

我可以毫无问题地上传主图像,并且输出循环也很容易。但我希望能够在上传文件、文件名和信息的同时复制和拇指图像并将文件、文件名和信息插入目录和数据库。

我一直在尝试在文件上传后运行副本,然后我打算测试一个 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 变量的情况下尝试了它,我最初也在没有完整路径的情况下尝试过它。但他们都没有工作。

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

任何帮助都感激不尽。

干杯

4

3 回答 3

1

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

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

于 2012-10-13T18:58:18.057 回答
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);
于 2012-10-13T19:23:46.313 回答
0

这对我有用:

我使用 dirname( FILE ) 而不是DIR

$path = 目录名(文件);

于 2014-01-22T01:51:54.247 回答