我正在尝试上传图像,同时将文件复制到另一个目录,我希望将其创建为缩略图大小的图像。
这个想法是基本上构建一个动态相册,因此输出是一个图像循环,每次有人上传到它时都会自动更新。
我可以上传的主图像没有任何问题,输出循环也很容易。但我希望能够在上传的同时复制和缩略图像,并将文件,文件名和信息插入目录和数据库。
我一直在尝试在文件上传后运行副本,然后我打算测试一个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文件夹。它只是没有被复制。数据库正在更新,不用担心。
任何帮助将不胜感激。
干杯
答案 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 );