我正在创建一个提交视频文件的表单;在 php 代码的同一文件中,我将详细信息保存到 sql;问题是如果我上传超过 2Mb 的文件,那么它不会保存到数据库中。
在 php.ini 中,我将 upload_max_filesize 更改为 50M,post_max_size 更改为 100M,file_upload 处于打开状态,同时 memory_limit 设置为 -1;但在我的 phpinfo() 文件中,即使重新启动 apache 服务器后,upload_max_filesize 仍显示 2M,post_max_size 仍显示 8M。我该怎么办?
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include('adminHeader.php');
include('../models/dbconnection.php');
if(!isset($_SESSION)) {
session_start();
}
if($_SESSION['is_admin_login'] === true) {
$adminEmail = $_SESSION['AdminLogEmail'];
} else {
echo "<script>location.href='/';</script>";
}
$msg = '';
$courseArr = [];
if (isset($_SESSION['courseID']) && empty($courseArr)) {
$sql_course = "SELECT * FROM course WHERE course_id = {$_SESSION['courseID']}";
$result = $conn->query($sql_course);
$courseArr = $result->fetch_assoc();
}
if ($conn === null) {
// Handle database connection error
$msg = '<div class="alert alert-danger col-sm-6 ml-auto mr-auto mt-5 text-centre">Failed to connect to the database.</div>';
} else {
if (isset($_REQUEST['lessonSubmitBtnClk'])) {
var_dump($_REQUEST);
if (empty($_REQUEST['lessonName']) || empty($_REQUEST['lessonDesc']) || empty($_SESSION['courseID'])) {
$msg = '<div class="alert alert-warning col-sm-6 ml-auto mr-auto mt-5 text-centre">Fill All Fields.</div>';
} else {
$lessonName = mysqli_real_escape_string($conn, $_REQUEST['lessonName']);
$lessonDesc = mysqli_real_escape_string($conn, $_REQUEST['lessonDesc']);
$courseID = mysqli_real_escape_string($conn, $_SESSION['courseID']);
$lessonLink = $_FILES['lessonLink']['name']; // issue file array empty
$lessonLinkTemp = $_FILES['lessonLink']['tmp_name'];
$vidFolder = './images/lesson_videos/' . $lessonLink;
// Handle file upload
if (move_uploaded_file($lessonLinkTemp, $vidFolder)) {
$sql = "INSERT INTO lesson (lesson_name, lesson_desc, lesson_link, course_id) VALUES ('$lessonName', '$lessonDesc', '$vidFolder', '$courseID')";
if ($conn->query($sql) === TRUE) {
$msg = '<div class="alert alert-success col-sm-6 ml-auto mr-auto mt-5 text-centre">lesson Added Successfully.</div>';
// Redirect to another page after successful form submission
echo "<script>window.location.href = './addLesson.php?checkid=$courseID';</script>";
exit;
} else {
$msg = '<div class="alert alert-danger col-sm-6 ml-auto mr-auto mt-5 text-centre">Failed to add lesson: ' . $conn->error . '</div>';
}
} else {
$msg = '<div class="alert alert-danger col-sm-6 ml-auto mr-auto mt-5 text-centre">Sorry, there was an error uploading your file.</div>';
}
}
}
}
?>
<div class="addlessonForm-box" style="margin: 50px auto; width: 50%;">
<div class="addlessonForm-heading">
<h2>Add lesson</h2>
</div>
<form action="" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="courseID">Course ID</label>
<input disabled type="text" class="form-control-file" id="courseID" name="courseID" value="<?php if(isset($courseArr['course_id'])) {echo $courseArr['course_id'];} ?>">
</div>
<div class="form-group">
<label for="courseName">Course Name</label>
<input disabled type="text" class="form-control-file" id="courseName" name="courseName" value="<?php if(isset($courseArr['course_title'])) {echo $courseArr['course_title'];} ?>">
</div>
<div class="form-group">
<label for="lessonName">Lesson Name</label>
<input type="text" class="form-control" id="lessonName" name="lessonName">
</div>
<div class="form-group">
<label for="lessonDesc">Lesson Description</label>
<textarea class="form-control" name="lessonDesc" id="lessonDesc" cols="30" rows="10"></textarea>
<!-- <input type="text" class="form-control" id="lessonDesc" name="lessonDesc"> -->
</div>
<div class="form-group">
<label for="lessonLink">Lesson Link</label>
<input type="file" class="form-control" id="lessonLink" name="lessonLink">
</div>
<div class="text-center">
<button type="submit" class="btn btn-danger" id="lessonSubmitBtnClk" name="lessonSubmitBtnClk" value="true">
Add
</button>  
<a href="./adminLesson.php" id="lessonClose">Close</a>
</div>
<div class="addlessonMsg">
<?php if(!empty($msg)) {echo $msg;} ?>
</div>
</form>
</div>
<?php
// echo "<script>alert($msg);</script>";
// echo json_encode($msg);
include('adminFooter.php');
?>
我不知道直接的解决方案,但你可以尝试这个:
我得到了这个函数来检查base64的文件大小
function checkBase64Size($base64, $maxSizeMB = 1) {
$decodedBase64 = base64_decode($base64);
$sizeBytes = strlen($decodedBase64);
// Convert the max to bytes
$maxSizeBytes = $maxSizeMB * 1024 * 1024;
// controls if smaler or equal to cap
return ($sizeBytes <= $maxSizeBytes);
}
首先你必须将它编码为base64,然后调用该函数来检查它是否大于x。
$base64Encoded = base64_encode($originalString);
//check the size
checkBase64Size($base64Encoded, 2)
有关 bate64 的更多信息,您可以在此处
找到