这个上传脚本是否正确?

时间:2012-04-12 18:06:35

标签: php

我有一个名为“Mobile_App”的文件夹,在该文件夹中是一个html页面,其中包含一个文件输入,一个上传文件的php脚本,以及一个名为“ImageFiles”的文件夹。

问题是文件没有上传到“ImageFiles”。我想知道的是,在将文件上传到“Imagefiles”文件夹时,下面的代码是否正确,或者它是否不正确以及如何使其正常工作?

下面是上传文件的php脚本(文件输入称为“fileImage”):

<?php

   $destination_path = $_SERVER['DOCUMENT_ROOT']."/ImageFiles";

   $result = 0;

   $target_path = $destination_path . basename( $_FILES['fileImage']['name']);

   if(move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) {
      $result = 1;
   }

   sleep(1);

?>

2 个答案:

答案 0 :(得分:0)

首先,文件夹名称和文件名之间没有/。其次,您不需要拥有文档根目录。更正后的代码:

<?php

   $destination_path = "/ImageFiles";

   $result = 0;

   $target_path = $destination_path . "/" . basename( $_FILES['fileImage']['name']);

   if(move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) {
      $result = 1;
   }

   sleep(1);

?>

答案 1 :(得分:-1)

没有。如果上传成功或失败,您根本没有检查过。您也不检查文件名冲突,您的脚本将很乐意用新的文件覆盖任何现有文件。

<?php

if ($_FILES['fileImage']['error'] !== UPLOAD_ERR_OK) {
   die("Upload failed with error code " . $_FILES['fileImage']['error']);
}

...
$target_path = etc...
...
if (file_exists($target_path)) {
   die("$target_path exists already");
}
// got here, must be ok to proceed
if (move_uploaded_file(....)) {
etc...

上传错误代码为defined here