1

我有一个允许用户上传文件的表单。我只是将后期处理更改为 post-redirect-get,因为用户也输入了其他信息。我注意到全局 $_FILE 对 redirect.php 可见,但在重定向回输入表单后丢失。我试图保存 $_FILE 数组,但似乎使用 post-redirect-get 删除了临时文件。有没有办法告诉服务器在离开 redirect.php 时保留临时文件,以便我可以在我认为合适的时候处理它们?提前致谢。

用户表格:

<input type="file" name="file[]" id="userfiles" size='1px' multiple onChange="makeFileList();" />

重定向文件:

if (isset($_FILES)){
    $_SESSION['post-files'] = $_FILES;
}
header("Location: /back/to/input/form.php");
4

2 回答 2

1

最后,最简单的解决方案是处理 redirect.php 中的临时文件并将文件存储在我自己的临时位置。然后我可以在我的处理表单中处理它们。对于任何跟随的人,这就是我所做的......

if (isset($_FILES)){
  $_SESSION['post-files'] = $_FILES;
  $i=0;
  foreach ($_SESSION['post-files']['file']['name'] as $filename){
    // get the file to upload
    $fromfile=$_SESSION['post-files']['file']['tmp_name'][$i];

    // get just the filename
    $filename = pathinfo($fromfile, PATHINFO_FILENAME) . '.' . pathinfo ($fromfile, PATHINFO_EXTENSION);

    // give it a new path
    $tofile = "/some/temp/path/". $filename;

    // store the new temp location
    $_SESSION['post-files']['file']['tmp_name'][$i] = $tofile;

    // move the files to a temp location
    if (!is_dir(pathinfo($tofile,PATHINFO_DIRNAME))) {
        mkdir(pathinfo($tofile,PATHINFO_DIRNAME), 0777, true);
    }
    move_uploaded_file($fromfile,$tofile);
  }
}
于 2013-10-06T23:31:43.907 回答
0

您可能能够将文件的编码副本传递到会话中。

就像是...

$tempImages = array();

foreach($_FILES as $file)
{
    $tempImages[] = base64_encode(file_get_contents($file['tmp_name']));
}

$_SESSION['post-files'] = serialize($tempImages);
于 2013-10-06T23:04:37.140 回答