php-基于上载文件大小显示错误消息无效
我正在制作基本的上传文件代码。用户只允许上传word和excel两种文件,上传文件大小限制为2MB 我尝试上传word文件,文件大小为1MB,已成功上传到数据库。当我测试代码时,会显示基于错误文件格式的错误消息,因此它可以工作 现在问题来了。当我试图通过上传文件5MB(即超过2MB限制)来测试它时,它显示消息“合同表单已成功提交!”!,但该文件未上载到数据库。它可以工作,但当它应该道歉时,它显示的信息是错误的。你的文件太大了。只允许2MB 这是怎么回事 PHP:php-基于上载文件大小显示错误消息无效,php,file-upload,Php,File Upload,我正在制作基本的上传文件代码。用户只允许上传word和excel两种文件,上传文件大小限制为2MB 我尝试上传word文件,文件大小为1MB,已成功上传到数据库。当我测试代码时,会显示基于错误文件格式的错误消息,因此它可以工作 现在问题来了。当我试图通过上传文件5MB(即超过2MB限制)来测试它时,它显示消息“合同表单已成功提交!”!,但该文件未上载到数据库。它可以工作,但当它应该道歉时,它显示的信息是错误的。你的文件太大了。只允许2MB 这是怎么回事 PHP: if ($_FILES['upl
if ($_FILES['upload']['size'] != 0 ){
$filename = mysqli_real_escape_string($con,$_FILES['upload']['name']);
$filedata= mysqli_real_escape_string($con,file_get_contents($_FILES['upload']['tmp_name']));
$filetype = mysqli_real_escape_string($con,$_FILES['upload']['type']);
$filesize = intval($_FILES['upload']['size']);
$created = date("Y-m-d H:i:s");
$allowed = array('zip','rar', 'pdf', 'doc', 'docx');
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(in_array($ext, $allowed)){
if($filesize < 2097152) {
$query = "INSERT INTO contracts( `filename`,`filedata`,`filetype`,`filesize`,`created`)
VALUES (?,?,?,?,?)";
$stmt = $con->prepare($query);
$null = NULL;
$stmt->bind_param("sbsis", $filename, $filedata, $filetype,$filesize,$created);
$fp = fopen($_FILES['upload']['tmp_name'], "r");
while (!feof($fp)) {
$stmt->send_long_data(18, fread($fp,$filesize));
}
fclose($fp);
$stmt->execute();
if ($stmt->errno){
echo "ERROR!!! " . $stmt->error;
} else {
$successMsg = "Contract Form Sucessfully Submitted!";
}
$stmt->close();
} else {
$errorMsg = "Sorry. Your file is too large. Only 2MB is allowed.";
}
} else {
$errorMsg = "Sorry. Only zip, rar, pdf, doc & docx are allowed.";
}
} else {
$created = date("Y-m-d H:i:s");
$query = "INSERT INTO contracts(`created`)
VALUES (?)" ;
$stmt = $con->prepare($query);
$stmt->bind_param("s", $created);
$stmt->execute();
if ($stmt->errno){
echo "ERROR!!! " . $stmt->error;
} else {
$successMsg = "Contract Form Sucessfully Submitted!";
}
$stmt->close();
}
}
$con->close();
?>
HTML格式:
<html>
<body>
<form role="form" method="post" action="" enctype="multipart/form-data">
<?php
if(isset($errorMsg)){
?>
<?php echo $errorMsg; ?>
<?php
} else if(isset($successMsg)){
?>
<?php echo $successMsg; ?>
<?php
}
?>
<label>Upload File</label>
<input type="file" name="upload" />
<button type="submit" class="btn btn-primary btn-md" name="submit">
<span class="glyphicon glyphicon-plus"></span> Submit New Contract
</button>
</form>
</body>
</html>
选中php.ini中的upload_max_filesize和post_max_size,并将它们设置为如下所示
memory_limit = 32M
upload_max_filesize = 24M
post_max_size = 32M
然后重新启动web服务器和php
你可以看到他们的眼睛
<?php
phpinfo();
另外您是否尝试在文件输入上方添加此代码:
<html>
<body>
<form role="form" method="post" action="" enctype="multipart/form-data">
<?php
if(isset($errorMsg)){
?>
<?php echo $errorMsg; ?>
<?php
} else if(isset($successMsg)){
?>
<?php echo $successMsg; ?>
<?php
}
?>
<label>Upload File</label>
<!-- the added code is here just above the input file type -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<input type="file" name="upload" />
<button type="submit" class="btn btn-primary btn-md" name="submit">
<span class="glyphicon glyphicon-plus"></span> Submit New Contract
</button>
</form>
</body>
祝你好运 @EbrahimPoursadeqi我找到了max_file_size和post_max_size,但没有找到max_post_file_size。post_max_size=max_post_file_size吗?它们是相同的@Hazirah_HalimI将post_max_size=2M,但仍然不起作用。为什么会这样?这与@Hazirah_Halim相同,请重新启动php和apache或nginxchange,并将大小设置为大于实际文件大小显示警告:第0行的POST内容长度5603302字节超出了未知中2097152字节的限制,但不抱歉。你的文件太大了。只允许2MB。您重新启动了web服务器吗?是的,我将两者都更改,并将大小设置为大于实际文件大小。它起作用了。谢谢。当我遇到这个问题时,我完全忘记了这个方法。