У меня есть общий вопрос о php, я не могу понять, что означает $ _FILES [«upload»] [«tmp_name»], почему я должен загружать файл в папку tmp, а не direclty в постоянную папку?
Спасибо, что прочитали, хорошего дня!
Интерпретатор PHP помещает загруженный файл во временный каталог, используя сгенерированное имя, и сохраняет путь в $_FILES['...']['tmp_name']
перед запуском вашего скрипта PHP.
Ты можешь использовать 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).
}
Читайте о способе обработки PHP загрузка файлов.
Других решений пока нет …