Это мое первое сообщение о переполнении стека, поэтому, пожалуйста, будьте терпеливы со мной - я прибегнул к публикации, потому что не могу найти ответ через Google / переполнение стека.
Я новичок вPHP и обучение, как добавить загрузку файлов.У меня есть очень простая HTML-форма, которая ведет на страницу PHP.
<form action="UploadPage.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000"/>
<input type="file" name="uploadedXML"/>
<input type="submit" value="Upload"/>
Код PHP, который обрабатывает загрузку файла, содержит серию операторов if, чтобы проверить, является ли файл подходящего размера и т. Д. Если естьявляется ошибкой, на странице ошибки генерируется соответствующее сообщение об ошибке.
Я тестировал загрузку файлов различных типов, чтобы убедиться, что операторы ошибок выполняются правильно, и у меня возникают проблемы со вторым (проверьтедля типа файла) и третий (проверьте размер файла).
Если тип файла проверяет, указан ли оператор первым, я нахожу, что если я загружаю файл XML больше максимального размера (100 КБ), я все равнополучить сообщение об ошибке, относящееся к проверке типа файла - когда я должен получить сообщение об ошибке, относящееся к размеру файла.
Однако, если я поменяю местами операторы IF, проверка размера файла будет предшествовать проверке типа файла, если я загружаю неправильный тип файла, но приемлемого размера (например, маленькое изображение), я получаю сообщение об ошибке, относящееся кo файл слишком велик, когда я ожидаю, что файл, относящийся к типу файла, неверен.
<?php
const UploadKey = 'uploadedXML';
const AllowedTypes = ['application/xml','text/xml'];
session_start();
/*Checking for errors*/
if (empty($_FILES[UploadKey]['name'])){//check file actually been uploaded
header("Location: ErrorPage.php");
$_SESSION['errorMessage']="You forgot to add your file!";
die();
}
if (!in_array($_FILES[UploadKey]['type'],AllowedTypes)){//Check correct type of file
header("Location: ErrorPage.php");
$_SESSION['errorMessage']="We only accept XML files I'm afraid";
die();
}
if ($_FILES[UploadKey]['error'] == 2) {//Check if size too big
header("Location: ErrorPage.php");
$_SESSION['errorMessage']="Your file is too big for us to handle, awkward! Please choose a file under 100KB.";
die();
}
$tempFileLoc = $_FILES[UploadKey]['tmp_name'];
$destFileLoc = 'Uploads/'.$_FILES[UploadKey]['name'];
if (file_exists($destFileLoc)) {// Check if file already exists
header("Location: ErrorPage.php");
$_SESSION['errorMessage']="We've already got this file, thanks though";
die();
}
if ($_FILES[UploadKey]['error']>0){
header("Location: ErrorPage.php");
$_SESSION['errorMessage']="Unfortunately there's been an error with the uploading process";
die();
}
Пожалуйста, дайте мне знать, если вам понадобится больше кода, чтобы помочь в ответе.
Большое спасибо заранее!