我有一个表单页面发布到另一个页面,其中处理多个字段和文件上载。只是想知道当'/如果用户输入一些不正确的信息并且我将它们发送回带有meta refesh的表单页面时'tmp_name'文件会发生什么?
如果成功,我将文件移动到新位置。但如果不成功,如果用户被重定向,文件是否会被取消设置或删除?如果他们不这样做,我可以再次访问它们,以便用户不必重新上载吗? OTOH如果文件有问题,说它不是预期的MIME类型,我应该取消链接($ _ FILES ['userFile'] ['tmp_name']?我认为很容易强迫用户重新上传,但我不希望服务器被填满永远不会被使用的文件?如果表单通过检查,我使用rename()移动文件,临时文件真的不见了吗?它是否曾经存在于服务器上开车,还是仅限于RAM?这是最好的做法吗?
答案 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
该文件将从中删除 临时目录在末尾 要求,如果它没有被移走 或重命名。