PHP move_uploaded_file到目录并创建文件

时间:2011-03-14 18:55:16

标签: php file-upload

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

因此,任何一方都需要一种方法来首先制作文件,或者有另一种方法可以做到这一点。代码。

<?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';
  }
?>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为你误解了move_uploaded_file()的工作原理。它不会为您创建文件。它:

  1. 采用PHP为您创建的临时文件来保存上传(文件名/路径位于$_FILES['thumbfile']['tmp_name']
  2. 进行一些安全检查,以确保在上传完成和发出move_uploaded_file调用之间没有人篡改文件
  3. 然后将文件移动到您指定的位置。
  4. 它无法处理上传或接收文件 - 当您的上传处理脚本被启动时,上传已经完成且文件正在该tmp_name位置等待。

    如果因任何原因无法完成移动,move_uploaded_file()将返回false。如果您在目的地覆盖文件,并且假设您知道自己在做什么,它不会警告您。

答案 1 :(得分:0)

我的错误。我离开了目录测试。那应该已经消失了。无论如何,谢谢你的帮助。