2011-03-14 85 views
1

我有一个脚本上传文件,然后将其移动到目录。但是,该脚本不知道其创建的文件的名称,因为它尚未创建它,并且找不到要更新的文件。PHP move_uploaded_file目录并创建文件

所以,无论是需要一种方法来使文件第一或有另一种方式做到这一点。代码。

<?php 

$filename = '/home/divethe1/public_html/update/z-images/admin/upload/test/'; 

if ($_FILES['thumbfile']['error'] === UPLOAD_ERR_OK) { 
    $info = getimagesize($_FILES['thumbfile']['tmp_name']); 
    if (($info[2] !== IMG_GIF) && ($info[2] !== IMG_JPEG)) { 
     die("not a gif/jpg"); 
    } 
    if (filesize($_FILES['thumbfile']['tmp_name']) > 100000) { 
     die("larger than 100000"); 
    } 
    move_uploaded_file($_FILES['thumbfile']['tmp_name'], $filename . $_FILES['thumbfile']['name']); 

     echo '<script type="text/javascript"> 
parent.document.getElementById("thumbprogress").innerHTML = "Archiving"</script>Archiving'; 

    } 
else 
    { 
    echo '<script type="text/javascript"> 
parent.document.getElementById("thumbprogress").innerHTML = "Invalid File Format"</script>Invalid File Format'; 
    } 
?> 

任何想法?

+0

对不起,我很困惑 - 你发布的代码应该工作,并且你有获得文件名所需的所有东西(据我所知,你已经在使用它了 - $ _FILES ['thumbfile']] ['名称'])。您是否尝试更新其他文件或更新上传的文件?你可以发布你正在更新的地方吗? – Leniency 2011-03-14 19:06:50

+0

重点是该文件尚未创建。所以它没有要更新的文件。它在上传完成后创建一个新文件,然后将其存储在/ uploads /中。所以我认为最简单的方法是为它提供路径,并将其上传的名称用作文件名并创建该文件。因此,如果上传一个名为testimage.gif的文件,它会将其存储为/upload/testimage.gif – 2011-03-14 19:10:40

+0

这不就是您的代码目前的功能吗? – GWW 2011-03-14 19:18:04

回答

1

我认为你误解了move_uploaded_file()是如何工作的。它不会为你创建一个文件。它:

  1. 注意到创建您举办上传(对于该文件名/路径是$_FILES['thumbfile']['tmp_name']
  2. 做了一些安全检查,以确保与之间的文件篡改没有人的临时filethat PHP完成上传并发出move_uploaded_file调用
  3. 然后将文件移动到您指定的位置。

它不处理上传,或接收文件 - 由时间上传处理脚本被炒鱿鱼了,上传已经完成,该文件在tmp_name位置等待。

如果由于某种原因无法完成移动,则move_uploaded_file()返回false。假设你知道你在做什么,它不会警告你是否覆盖目标文件。

0

我的错误。我离开了目录测试。那应该已经过去了。无论如何,感谢所有的帮助。