2013-07-03 123 views
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图像时,这只会无法正常工作。

只是要清楚。脚本正在使用localhost(XAMPP)。我在上传到我的虚拟主机服务器时遇到问题。另外,当我上传大约300kb的3个图像文件时,该脚本正在工作,但是当我尝试上传3个大小约为1MB的文件时,该过程失败的时间大约为60%。我认为这个问题不大,但在上传时间。

回答

0

也许你需要增加允许在php.ini 大小或做这样的事

ini_set('post_max_size', '10M'); 
ini_set('upload_max_filesize', '10M'); 
ini_set('max_file_uploads', '20'); 
+0

不行。 –

+0

我已经更新了答案。也许你需要设置最大文件上传。确保它在别的之前运行 –

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"; 
    } 
} 

只是用filesize修改你的脚本,你应该没问题。

+1

看不到这可以解决问题。 –

+0

这只是如何使用文件大小来确保您能够提交大文件的示例。 – Si8

0

这样做:

  • 搜索你的php.ini。 (我的是下/etc/php5/apache2/php.ini)
  • 编辑 “的post_max_size” 至5M
  • 编辑 “的upload_max_filesize” 至5M
  • 编辑 “max_file_uploads” 到20(< - 该值决定多少文件可以上传使用一个请求。)

希望这可以帮助。

+0

我正在使用托管服务,无法访问Apache。 –

+0

我认为这个问题可能出现在web服务器设置中,因为代码在localhost上运行。上传时间可能不够,服务器关闭连接。 –

+0

这可能是!如果您有权访问apache,将'max_execution_time = 30'从默认的30秒增加到120秒可能会有所帮助。 也许您可以在您的主机上打开一张票来申请这些更改。 – cb0

0

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