Пропустить файл через другой шаг в PHP - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть такой сценарий:

  1. page-1 с формой, в которой выбирается файл (XML) для импорта
  2. после отправки я перенаправляюсь на страницу-2, где все входные данные предварительно скомпилированы с информацией, полученной из файла XML (файл загружен и временно сохранен с функцией tmpfile())
  3. Если я хочу отменить или отменить процесс сохранения моих данных, я могу закрыть браузер или изменить страницу в порядке, потому что загруженный файл является временным файлом благодаря функции tmpfile(), поэтому он будет автоматически удален система ....
  4. но если я хочу подтвердить форму на странице-2, мне нужно: 1- сохранить все входные данные в моей базе данных (хорошо, нет проблем, они все текстовые), 2- переместить файл, выбранный на шаге 1, из временного режима в каталог

Проблема на шаге 4.2, поскольку файл, созданный с помощью tmpfile (), удаляется после завершения сценария. Поэтому я не могу переместить его в каталог.

Как лучше всего «распространить» файл из формы-1 в форму-N в PHP?

Я думаю, что использование file_get_contents () может быть решением с использованием скрытой текстовой области для передачи ее на каждую страницу ... но для больших файлов я не знаю, хорошая ли это идея.

Маленькие кусочки кода:

страниц 2.php

 <?php

if ( isset($_POST['action']) && $_POST['action'] == "import" ) {

    if (file_exists($_FILES['fileXMLimport']['tmp_name']) || is_uploaded_file($_FILES['fileXMLimport']['tmp_name'])) {

    $content = file_get_contents($_FILES['fileXMLimport']['tmp_name']);

    $filename = $_FILES['fileXMLimport']['name'];

}

//omitted: code to read the file xml

//$f1 = "data readed from file";

//

}

?>
 <body>
  <form id="form2">

     <input type="text" name="f1" value="<?php echo $f1; ?>">
     <input type="text" name="f2" value="<?php echo $f2; ?>">
     ...list of field readed from file
     <input type="text" name="fn" value="<?php echo $fn; ?>">

     <textarea class="hidden" name="fileContent"><?php echo base64_encode($content); ?></textarea>
     <input type="hidden" name="fileName" value="<?php echo $filename; ?>">

     <input type="submit" value="Submit and save file">

  </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...