2013-07-03 122 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解決了一個問題。它現在有效。我的意思是,我沒有解決問題,我避開了它。