У меня есть такой сценарий:
- page-1 с формой, в которой выбирается файл (XML) для импорта
- после отправки я перенаправляюсь на страницу-2, где все входные данные предварительно скомпилированы с информацией, полученной из файла XML (файл загружен и временно сохранен с функцией
tmpfile()
)
- Если я хочу отменить или отменить процесс сохранения моих данных, я могу закрыть браузер или изменить страницу в порядке, потому что загруженный файл является временным файлом благодаря функции
tmpfile()
, поэтому он будет автоматически удален система ....
- но если я хочу подтвердить форму на странице-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>