导航离开php中的页面后上传文件会发生什么?

时间:2011-06-25 14:52:21

标签: php

我有一个表单页面发布到另一个页面,其中处理多个字段和文件上载。只是想知道当'/如果用户输入一些不正确的信息并且我将它们发送回带有meta refesh的表单页面时'tmp_name'文件会发生什么?

如果成功,我将文件移动到新位置。但如果不成功,如果用户被重定向,文件是否会被取消设置或删除?如果他们不这样做,我可以再次访问它们,以便用户不必重新上载吗? OTOH如果文件有问题,说它不是预期的MIME类型,我应该取消链接($ _ FILES ['userFile'] ['tmp_name']?我认为很容易强迫用户重新上传,但我不希望服务器被填满永远不会被使用的文件?如果表单通过检查,我使用rename()移动文件,临时文件真的不见了吗?它是否曾经存在于服务器上开车,还是仅限于RAM?这是最好的做法吗?

2 个答案:

答案 0 :(得分:3)

  

如果用户被重定向,文件是否会被取消设置或删除?

上传的文件存储在/tmp目录中(或指定为PHP临时位置的任何目录)。脚本运行后,任何时候都会删除那里的文件。我认为它们通常不会立即删除,但必要时操作系统会自动清除/tmp的内容。

/tmp通常位于硬盘驱动器上,而不是RAM中。

管理这通常不需要担心。

  

如果表单通过检查,并且我使用rename()来移动文件,那么临时文件真的不见了吗?

是的,但出于安全原因,必须对上传的文件而不是rename()使用move_uploaded_file()

答案 1 :(得分:1)

该文件存储在tmp文件夹中,如果您不将其移动到其他位置,它将保留在那里。它将在下次清理时由OS自动删除。

编辑: 请看下面Marc的评论。

http://www.php.net/manual/en/features.file-upload.post-method.php

  

该文件将从中删除   临时目录在末尾   要求,如果它没有被移走   或重命名。