0

我有一个 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";
  }
?>
4

1 回答 1

0

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

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

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

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

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

于 2013-07-05T19:32:34.970 回答