0

我有以下问题。我使用带有四个经过验证的文本输入字段(不允许为空)的输入表单,并在同一个表单上使用下面的三个文件输入字段。当我尝试上传尺寸较小的图像时,一切正常。但是当我选择更大的图片时,比如 1MB 左右,即使我填写了文本输入字段,我也会收到验证错误。

$ime = mysql_real_escape_string($_POST['ime']);
$mesto = mysql_real_escape_string($_POST['mesto']);
$telefon = mysql_real_escape_string($_POST['telefon']);
$emajl = mysql_real_escape_string($_POST['emajl']);
$opis = mysql_real_escape_string($_POST['opis']);

if ((empty($ime)) || (empty($mesto)) || (empty($telefon)) || (empty($emajl))){echo "Moraju biti uneti podaci u obavezna polja"; exit;}
//unos slike1
if ((($_FILES["slika1"]["type"] == "image/gif")
|| ($_FILES["slika1"]["type"] == "image/jpeg")
|| ($_FILES["slika1"]["type"] == "image/jpg")
|| ($_FILES["slika1"]["type"] == "image/pjpeg")
|| ($_FILES["slika1"]["type"] == "image/x-png")
|| ($_FILES["slika1"]["type"] == "image/png"))
&& ($_FILES["slika1"]["size"] < 2097152))
{
if ($_FILES["slika1"]["error"] > 0)
 {
 echo "Greška: " . $_FILES["slika1"]["error"] . "<br>";
 }
else
 {
$razdvajanje = explode('.',$_FILES['slika1']['name']);
 $ekstenzija = $razdvajanje[1];
$novoime = mysql_real_escape_string($razdvajanje[0]).'_'.time();     
 $putanja = 'uploads/' . $novoime . "." . $ekstenzija;
move_uploaded_file($_FILES['slika1']['tmp_name'], $putanja);
 }
 }
 else
 {
 echo "Slika mora biti manja od 2MB i u adekvatnom formatu";

我得到的错误是“Moraju biti uneti podaci u obavezna polja”,即使该字段不为空。当我尝试只上传一张较大的图片时,它也可以。仅当我尝试同时上传三个 1MB 图像时,它才不起作用。

只是要清楚。脚本正在本地主机(XAMPP)上运行。上传到我的网络托管服务器时遇到问题。此外,当我上传 3 个大约 300kb 的图像文件时,该脚本正在工作,但是当我尝试上传 3 个大约 1MB 大小的文件时,该过程在 60% 左右失败。我认为问题不在于大小,而在于上传时间。

4

4 回答 4

0

也许您需要增加 php.ini 中允许的大小或执行类似的操作

ini_set('post_max_size', '10M');
ini_set('upload_max_filesize', '10M');
ini_set('max_file_uploads', '20');
于 2013-07-03T15:37:25.237 回答
0

我通过将图像大小限制为 500kb 解决了一个问题。现在可以了。我的意思是,我没有解决问题,我避免了它。

于 2013-07-04T19:16:32.520 回答
0

您必须设置文件大小并覆盖 PHP 设置的默认大小:

像这样的东西:

$size1=$_FILES["uploaded_file"]["size"]/1024;
$max_allowed_file_size = 50000;

if($size1 >= 0)
{
    if($size1> $max_allowed_file_size )
    {
    $err[]= "\n Size of file should be less than $max_allowed_file_size";
    }
}

只需使用文件大小修改脚本,就可以了。

于 2013-07-03T15:41:12.093 回答
0

做这个:

  • 搜索您的 php.ini。(我的在 /etc/php5/apache2/php.ini 下)
  • 将“post_max_size”编辑为 5M
  • 将“upload_max_filesize”编辑为 5M
  • 将“max_file_uploads”编辑为 20(<- 这个值决定了使用单个请求可以上传多少个文件。)

希望这可以帮助。

于 2013-07-03T15:42:02.533 回答