保持上传的文件跨多个页面

时间:2009-05-29 20:34:16

标签: php

我有一个页面需要接受没有预定义布局的.csv文件。也就是说,用户将选择每列中的数据类型。

现在,上传文件表单将我发送到.php脚本,该脚本可以访问上传的文件。它读取它,并让用户为每个列分配类别。我的下一步是将.csv文件中的数据复制到数据库,但我不确定如何防止文件从临时目录中删除,我仍然需要在下一页进行实际复制。另外,我对将文件复制到服务器上的其他位置不感兴趣,这似乎是一种浪费,并且在允许并发的情况下正确地执行操作会很麻烦。

如何防止文件被删除,或者,什么是解决此问题的更好方法?

2 个答案:

答案 0 :(得分:3)

好吧,如果不移动上传的文件,我不确定这是否可维护。

就个人而言,我会这样实施:

在接收上传文件的页面上:

//assuming it hasn't already been started...
session_start();

//generate a unique filepath
$filepath = PATH_TO_THE_DIR . "/" . time() . 
"_" . md5_file($_FILES['formelement']['tmp_name']) . ".csv";

//move the uploaded file
move_uploaded_file($_FILES['formelement']['tmp_name'], $filepath);

//do whatever you need with the file, now at $filepath

//now store the filepath in the session:
$_SESSION['uploaded_filepath'] = $filepath;

session_write_close();

在第二页上,当您想要进行更多处理时:

//assuming it hasn't already been started...
session_start();

$filepath = $_SESSION['uploaded_filepath'];

// do whatever you need to with the file

unlink($filepath);

unset($_SESSION['uploaded_filepath']);

session_write_close();

这应该没问题 - 显然你需要检查PATH_TO_THE_DIR的权限 常数,它只是某个目录。

答案 1 :(得分:2)

您需要使用move_uploaded_file。实际上无法将其复制到其他位置。你不应该担心它,因为这样的事情对任何文件系统都不是问题。 至于并发性,我不知道你将如何遇到这个问题。数以百万计的PHP应用程序做得很好: - )