2012-10-13 30 views
0

我想上传一个图像,同时将文件复制到另一个目录,然后我希望将其创建为缩略图大小的图像。使用PHP上传文件后复制到第二个目录

这个想法是基本上建立一个动态的相册,所以输出是一个图像循环,每次有人上传时它会自动更新。

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

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

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

任何帮助将不胜感激。

干杯

+0

您应该为目标路径提供本地路径,而不是URL。 –

回答

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); 
1

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

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

+1

答案包含解决方案,评论包含建议。 –

+0

干杯家伙,它现在有效。我以为我曾经使用过当地的道路。无论如何它现在起作用。干杯 – robolist

0

这个工作对我来说:

我使用的目录名(FILE),而不是DIR

$ PATH =目录名(FILE);

相关问题