Загрузите файл и перейдите на другую страницу PHP - PullRequest
1 голос
/ 30 марта 2012

Итак, у меня есть 4 страницы. Они очень простые.

index.php (РАБОТАЕТ)

<html>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

upload.php (РАБОТАЕТ)

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];

  echo 'Are you sure you want to continue saving this file';
  echo '<a href="yes.php">Yes, continue</a>
  <br />
  <br />
  <a href="no.php">No thanks</a>'
  }
?>

no.php (РАБОТАЕТ)

<?php
echo 'Thanks anyway';
?>

yes.php (ОШИБКА)

<?php
    if ($_FILES["file"]["error"] > 0)
      {
      echo "Error: " . $_FILES["file"]["error"] . "<br />";
      }
    else
      {
      echo "Upload: " . $_FILES["file"]["name"] . "<br />";
      echo "Type: " . $_FILES["file"]["type"] . "<br />";
      echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
      echo "Stored in: " . $_FILES["file"]["tmp_name"];

      echo 'We will now save this document:';
      //Save document code
      }
    ?>

Вывод yes:

Notice: Undefined index: file in /home/public_html/test/yes.php on line 2 Invalid file

We will now save this document:?

Как видите, я никогда не сохраняю это. Но я бы хотел сохранить его на странице yes.php. Можно ли получить исходный документ, который был загружен? Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 30 марта 2012

Загруженные файлы доступны только для одного цикла экземпляра / запроса PHP.
Загруженные файлы хранятся во временном каталоге. Если они все еще там, когда скрипт завершит выполнение, PHP удалит их, если они вам не нужны.

Если вы хотите сохранить файл, вам придется переместить его в другое место в том же запросе, что файл был загружен.

1 голос
/ 30 марта 2012

Вы пытаетесь передать файлы из формы на страницу, отличную от запланированной.Значения записей больше не будут действительными.Я бы предложил сохранить файл в upload.php во временную папку и затем передать его на страницу да или нет через переменную $ _GET [] или сеанса.

На странице no.php вывзял бы этот файл и использовал бы

unlink($somefile);

Это удалит файл с вашего сервера.

На странице yes.php я бы переместил или скопировал файл.Если вы скопируете файл, я бы использовал unlink для удаления временного файла.

0 голосов
/ 05 сентября 2018

Если файл не слишком большой, скопируйте содержимое файла в переменную сеанса.Сессия будет сохранена с одной страницы на другую.

0 голосов
/ 30 марта 2012

Вы можете попробовать использовать move_uploaded_file () , чтобы временно сохранить файл и затем передать информацию о файле, используя

<a href="yes.php?filename=tmp_file_path">Yes, continue</a>
<a href="no.php?filename=tmp_file_path">No thanks</a>

Затем получить имя файла в yes.php, используя

$tmpFile = $_GET["filename"];

или удалите его в no.php, используя

unlink($_GET["filename"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...