PHP:如何将临时文件上传复制到多个位置?

时间:2010-03-11 19:17:36

标签: php file-upload multiple-files

如何将同一文件复制两次?我正在尝试做这样的事情:

                copy($file['tmp_name'], $folder."1.jpg");
            copy($file['tmp_name'], $folder."2.jpg");
            copy($file['tmp_name'], $folder."3.jpg");

临时文件在被服务器销毁之前有多少时间?

我也尝试使用move_uploaded_file,但我无法使其工作。我想从上传的文件生成2个拇指。

一些帮助?

谢谢,

4 个答案:

答案 0 :(得分:31)

move_uploaded_file会移动文件,而不是复制它 - 这意味着它只能运行一次。

如果您使用的是copy,则根据您可以复制的次数不应有任何限制:上传创建的临时文件只会在您执行结束时销毁。脚本(除非您之前移动/删除它)


不过,也许一个解决方案是首先使用move_uploaded_file,然后使用copy? 有点像这样,我想:

if (move_uploaded_file($file['tmp_name'], $folder . '1.jpg')) {
    copy($folder . '1.jpg', $folder . '2.jpg');
    copy($folder . '1.jpg', $folder . '3.jpg');
}

这样您就可以获得move_uploaded_file ...

提供的检查


如果这不起作用,那么请确保:

  • $folder包含您想要的内容 - 包括最终的/
  • $file['tmp_name']还包含您想要的内容(我猜这是$_FILES的某种副本 - 请确保$_FILES的副本为{{1}正确完成)

答案 1 :(得分:4)

为什么move_uploaded_file()不起作用?你想尝试两次吗?你不能这样做,它移动它,所以第二次失败。

我只需使用move_uploaded_file()一次,然后从您刚刚将其移动到的位置制作第二个副本:

move_uploaded_file($uploaded, $destination);
copy($destination, $destination2);

答案 2 :(得分:2)

我没有直接回复您的问题,但是这个解决方法怎么样?

copy($file['tmp_name'], $folder."1.jpg");
copy($folder."1.jpg"  , $folder."2.jpg");
copy($folder."1.jpg"  , $folder."3.jpg");

答案 3 :(得分:1)

谢谢你,你给我一盏灯。

我做了这样的事情:

    $objUpload = new Upload();
    $filename = $objUpload->uploadFile($newFile,$folder); 
// returns a string    
    $objUpload->makeThumb($filename,$folder,"thumbs",139); 
// makes a 139px thumbnail from the original file uploaded on the first step
    $objUpload->makeThumb($filename,$folder,"mini",75); 
// makes another thumb from the same file

使用move_uploaded_file并复制我们只能制作一个拇指。 :)