[英]PHP .doc File Upload Not Working
我有一個頁面,我希望用戶能夠上傳 .pdf、.docx 和 .doc 文件。 PDF 和 DOCX 上傳工作正常,但不允許 DOC 文件。
這是我的表單和輸入按鈕:
<form action="?action=uploadForm" method="post" enctype="multipart/form-data" style="border:1px solid black;">
<input type="file" class="btn btn-md btn-primary btn-block" name="fileToUpload" id="fileToUpload" accept=".pdf,.docx,.doc" title="PDF and Word files only" />
對於 DOC 文件,該文件似乎永遠不會放入$_FILES
。
這是我所有的文件驗證/上傳邏輯:
if (isset($_GET['action']) == 'uploadForm') {
// Get the option from the dropdown, so we can upload the form to the right directory
$selectedTypeOfForm = $_POST['typeOfForm'];
$target_dir = "files/" . $selectedTypeOfForm . "/"; // The directory for the upload to go to
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // The name of the file being uploaded
$fileName = basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = pathinfo($target_file,PATHINFO_EXTENSION);
dump($_FILES);
$_SESSION['message'] .= "<br>";
// Check if file already exists
if (file_exists($target_file)) {
$_SESSION['message'] .= "Sorry, the file <b>" . $fileName . "</b> already exists.<br>";
$uploadOk = 0;
}
// Check file size
if (($fileType == "pdf" && $_FILES["fileToUpload"]["size"] > MAXIMUM_PDF_SIZE) || ($fileType == "doc" && $_FILES["fileToUpload"]["size"] > MAXIMUM_WORD_SIZE) || ($fileType == "docx" && $_FILES["fileToUpload"]["size"] > MAXIMUM_WORD_SIZE)) {
$_SESSION['message'] .= "Sorry, the file <b>" . $fileName . "</b> is too large. The file must be under ";
if ($fileType == "pdf") {
$_SESSION['message'] .= (MAXIMUM_PDF_SIZE / 1000000) . "MB for a PDF.<br>";
} else {
$_SESSION['message'] .= (MAXIMUM_WORD_SIZE / 1000000) . "MB for a Word document.<br>";
}
$uploadOk = 0;
}
// Allow certain file formats
if($fileType != "pdf" && $fileType != "doc" && $fileType != "docx") {
$_SESSION['message'] .= "Sorry, only PDF, DOC, and DOCX files are allowed. You tried to upload a <b>" . strtoupper($fileType) . "</b>.<br>";
$uploadOk = 0;
}
// FINAL UPLOAD
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
$_SESSION['message'] .= "<br>Sorry, your file <b>" . $fileName . "</b> was not uploaded.<br>";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$_SESSION['message'] .= "<br>The file <b>" . basename($_FILES["fileToUpload"]["name"]) . "</b> has been uploaded.<br>";
} else {
$_SESSION['message'] .= "<br>Sorry, there was an error uploading the file <b>" . $fileName . "</b>.<br>";
}
}
// header('Location:/forms.php');
echo "<a href='/forms.php'>FORMS</a>";
exit;
}
上傳 .DOC 文件會顯示以下消息:
Sorry, the file already exists.
Sorry, only PDF, DOC, and DOCX files are allowed. You tried to upload a .
Sorry, your file was not uploaded.
問題在於 php.ini 中的upload_max_filesize
和post_max_size
。 該文件在我的代碼觸及它之前就消失了,因為這些值被設置為低於我嘗試上傳的 .doc 文件的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.