2012-03-30 28 views
0

所以我有4页。他们非常简单。把文件上传并转到另一个PHP页面

的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(ERROR)

<?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 
     } 
    ?> 

输出是的:

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

We will now save this document:? 

正如你可以看到我从来没有保存。但我想将其保存在yes.php页面中。是否仍可以检索上传的原始文档?提前致谢。

+0

我觉得'$ _FILES' var在你改变页面时没有设置,所以这是行不通的。但是你可以在'$ _POST'中传递URI,在'yes.php'中传递'fopen()' – Jon 2012-03-30 04:40:15

+0

@JamesWilliams是对的。将其保存到磁盘,如果用户想要“不保存”,则取消链接()。 – 2012-03-30 04:58:16

回答

2

上传的文件只适用于唱歌PHP实例/请求周期。
上传的文件存储在临时目录中。如果脚本在执行完毕后仍然存在,那么假定您不需要它们,PHP将删除它们。

如果您要保留该文件,则必须将其移至其他位置,以便与该文件上传的请求相同。

1

您试图将文件从表单传递到不同的页面,然后打算。帖子值将不再有效。我建议将upload.php中的文件保存到临时文件夹中,然后通过$ _GET []或会话变量将它传递给yes或no页面。

在no.php页面,你会采取这一文件,并使用

unlink($somefile); 

这会从您的服务器删除该文件。

在yes.php页面上,我将移动或复制文件。如果您复制该文件,我将使用取消链接来删除临时文件。

+0

那么,如果用户退出该页面呢?该文件是否仍然存在? 因为我在技术上没有运行任何会删除它的东西。 – EGHDK 2012-03-30 05:02:24

+1

将临时文件名添加到具有时间戳的数据库中。超过x分钟的任何内容都应该删除。如果他们说是或否,临时文件将被删除。 – 2012-03-30 05:27:23

+0

@EGHDK可以与周三先生建议,或者在任何或所有页面中包含文件年龄检查,并在很多分钟后删除并删除文件。我用这个有一个缓存版本的网站。 – 2012-03-30 14:03:38

0

你可以尝试使用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"]; 

文件信息或没有将其删除。 php使用

unlink($_GET["filename"]); 
相关问题