通过PHP中的不同步骤传递文件

时间:2019-04-17 09:48:40

标签: php file

我有这样的情况:

  1. 第1页,其中的表单用于选择要导入的文件(XML)
  2. 提交后,我将重定向到第2页,其中所有输入都由从XML文件读取的信息进行了预编译(文件已上传并使用tmpfile()函数进行了临时保存)
  3. 如果我想放弃或取消保存数据的过程,可以关闭浏览器或更改页面,这要归功于tmpfile()功能,因为上传的文件是临时文件,因此将被自动删除通过系统。...
  4. 但是如果我想确认第2页中的表格,我需要:1-将所有输入保存在数据库中(好的,它们都是文本),2-将在步骤1中选择的文件从temp移到a目录

问题在步骤4.2中,导致用tmpfile()生成的文件在脚本结束后被删除。所以我不能将其移动到目录中。

在PHP中将文件从Form-1“传播”到Form-N的最佳方法是什么?

我认为使用file_get_contents()可以是一种使用隐藏的textarea在每个页面上传递它的解决方案...但是对于大文件,我不知道这是一个好主意。

小段代码:

page-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>

0 个答案:

没有答案