使用upload.php进行文件上传后更新表单。

时间:2013-07-05 19:09:20

标签: php forms parameters upload

我有一个php页面(名为add_ship.php),其中包含用于填充数据库的表单,包括文件上载。这可以通过单独的文件upload.php工作(如下所示)。

我无法工作的是当文件上传成功时,我创建了一个链接,返回到add_ship.php,图片名称作为参数......我怎么得到这个用于填写表单中正确字段的参数,如果用户已经输入了几个字段,那么那么选择上传图像,肯定所有其余数据都丢失了 - 有没有办法不丢失输入的内容(所以理想情况下,重新调整为add_ship.php并将文件名添加到正确的字段中?)

非常感谢

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Image succsefuly uploaded. " . "<br>" . "<br>";
    ?>
    <a href="add_ship.php?file_name= <?php echo $_FILES["file"]["name"] ?>">Click Hereto return to Add Ship page</a>
<?php


    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "../images/ships/" . $_FILES["file"]["name"]);

      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

1 个答案:

答案 0 :(得分:0)

您的直觉是正确的,通过导航到单独的页面来执行文件上传,您将丢失未保存的表单数据。有很多方法可以解决这个问题:

1)不要使用单独的页面。处理add_ship.php中的文件上传。基本上你只需将代码从upload.php移动到add_ship.php。上传完成后,处理剩余的表单数据。

2)将上传表单放入对话框中(例如,使用jquery .dialog())并异步上传文件(例如,使用jquery .ajax())。

您可以想出在两个单独的页面之间来回折叠表单数据的方法,但它们都相当繁琐且容易出错。

关于原始问题,有很多事情可能会出错。首先想到的是文件名中的特殊字符。