我有一个页面需要接受没有预定义布局的.csv文件。也就是说,用户将选择每列中的数据类型。
现在,上传文件表单将我发送到.php脚本,该脚本可以访问上传的文件。它读取它,并让用户为每个列分配类别。我的下一步是将.csv文件中的数据复制到数据库,但我不确定如何防止文件从临时目录中删除,我仍然需要在下一页进行实际复制。另外,我对将文件复制到服务器上的其他位置不感兴趣,这似乎是一种浪费,并且在允许并发的情况下正确地执行操作会很麻烦。
如何防止文件被删除,或者,什么是解决此问题的更好方法?
答案 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应用程序做得很好: - )