我有关于php的一般问题,我无法理解$ _FILES [“upload”] [“tmp_name”]是什么,我为什么要将文件上传到tmp文件夹,而不是直接进入永久文件夹? 感谢阅读,祝你有愉快的一天!
答案 0 :(得分:1)
PHP解释器使用生成的名称将上载的文件放在临时目录中,并在运行PHP脚本之前将路径存储在$_FILES['...']['tmp_name']
中。
您可以使用is_uploaded_file()
确保$_FILES['...']['tmp_name']
的内容确实是上传文件的路径(并且在请求中不会以某种方式欺骗)然后使用move_uploaded_file()
来放置最终目的地的文件。
或者您也可以在不移动文件的情况下处理文件内容,以防您不需要存储文件。
无论哪种方式,当您的脚本结束时,解释器会删除它创建的临时文件以存储上传的内容。
代码通常如下:
if (is_uploaded_file($_FILES['abc']['tmp_name'])) {
// Generate the path where to store the file
// Depending on the expected file type you can use getimagesize()
// or mime_content_type() to find the correct file extension
// and various ways to generate an unique file name (to not overwrite
// the file already existing in the storage directory)
$finalpath = '...';
if (move_uploaded_file($_FILES['abc']['tmp_name'], $finalpath)) {
// Successfully uploaded and processed.
} else {
// Cannot move the file; maybe there is a permissions issue
// or the destination directory simply doesn't exist.
}
} else {
// The upload failed.
// Check the value of $_FILES['abc']['error'] to find out why
// (usually no file was uploaded or the file is too large).
}
了解处理file uploads的PHP方法。