gpt4 book ai didi

php - 超过最大文件大小不显示错误

转载 作者:搜寻专家 更新时间:2023-10-31 21:07:23 25 4
gpt4 key购买 nike

我写了一段代码,它应该检查文件大小是否超过 8.5 MB,如果超过,它应该产生错误并禁止帖子进入数据库。该代码禁止帖子进入数据库,但未显示任何错误说明文件大小超过。 (P.S:未知文件格式的检查正在工作。)这是我写的代码:

   //$session id
define ("MAX_SIZE","9000");
function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}


$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{

$uploaddir = "uploads/"; //a directory inside
foreach ($_FILES['photos']['name'] as $name => $value)
{

$filename = stripslashes($_FILES['photos']['name'][$name]);
$size=filesize($_FILES['photos']['tmp_name'][$name]);
//get the extension of the file in a lower case format
$ext = getExtension($filename);
$ext = strtolower($ext);

if(in_array($ext,$valid_formats))
{
if ($size < (MAX_SIZE*1024))
{
$image_name=time().$filename;
echo "<img src='".$uploaddir.$image_name."' class='imgList'>";
$newname=$uploaddir.$image_name;

if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname))
{
$time=time();
mysql_query("INSERT INTO user_uploads(image_name,user_id_fk,created) VALUES('$image_name','$session_id','$time')");




}
else
{
echo '<p style="color: Red;">You have exceeded the size limit! so moving unsuccessful! </p>';
}

}
else
{
echo '<p style="color: Red;">You have exceeded the size limit!</p>';

}

}
else
{
echo '<p style="color: Red;">Unknown extension!</p>';

}

}
}

最佳答案

我稍微修改了你的代码。

你不需要这么复杂的函数 getExtension。

我更改了 foreach,以遍历文件而不是文件的属性。

最后你需要在移动文件之前检查目录是否存在。如果没有,您应该创建它。

if(!is_dir($uploaddir)) {
mkdir($uploaddir);
}

看看这是否有效并检查差异:

<?php
//$session id
define ("MAX_SIZE","9000");
function getExtension($str)
{
$ext = explode("/",$str);
return $ext[1];
}


$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{

$uploaddir = "uploads/"; //a directory inside
foreach ($_FILES as $FILE)
{

$filename = stripslashes($FILE['name']);
$size=$FILE['size'];
//get the extension of the file in a lower case format
$ext = getExtension($FILE['type']);
$ext = strtolower($ext);

if(in_array($ext,$valid_formats)){
if ($size < (MAX_SIZE*1024)){
$image_name=time().$filename;
echo "<img src='".$uploaddir.$image_name."' class='imgList'>";
$newname=$uploaddir.$image_name;

//Before you upload the file to the directory, check if it exists like this
if(!is_dir($uploaddir)) {
mkdir($uploaddir);
}

if (move_uploaded_file($FILE['name'], $newname)){
$time=time();
mysql_query("INSERT INTO user_uploads(image_name,user_id_fk,created) VALUES('$image_name','$session_id','$time')");
}else{
echo '<p style="color: Red;">You have exceeded the size limit! so moving unsuccessful! </p>';
}
}else{
echo '<p style="color: Red;">You have exceeded the size limit!</p>';
}
}else{
echo '<p style="color: Red;">Unknown extension!</p>';

}

}
}

它终于在我的电脑上工作了,所以假设它对你有用。希望我能帮上忙

关于php - 超过最大文件大小不显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com