簡體   English   中英

Zend文件上載:文件超出定義的ini大小

[英]Zend File upload: File exceeds the defined ini size

在我的表單中,我定義了此文件上傳字段:

$this->setEnctype(Zend_Form::ENCTYPE_MULTIPART);

$logo = $this->createElement('file', 'logo');
$logo->setLabel('Group logo')
     ->setMaxFileSize(5242880) // 5mb
     ->addValidator('IsImage')
     ->addValidator('Count', false, 1)
     ->addValidator('Size', false, 5242880)
     ->addValidator('Extension', false, array('jpg', 'jpeg', 'png', 'gif'));

但是,無論我上傳的文件有多小,都會出現此錯誤:文件“徽標”超出了定義的ini大小。

錯誤消息看起來很簡單,所以我檢查了php配置(在處理表單的同一頁面上的phpinfo())

  • file_uploads:開
  • upload_max_filesize:2000M
  • 內存限制:128M
  • post_max_size:8M

雖然這些值沒有意義,但絕對應該允許我上傳高達8Mb的文件,但由於上面的消息,上傳總是失敗。 甚至小於1Kb的文件也會失敗。 我也嘗試刪除所有設置器/驗證器,但仍然失敗。

在尋找答案時,我發現一些帖子說這是ajax的錯,但這是常規形式,所以現在我陷入了困境。

更新:非常抱歉浪費您的時間,頁面上還有另一個未關閉的表單使multipart-claration無效。 如果我使用較大的文件而不是較小的文件進行測試,可能早就發現了這一點:/

在您的表單中添加enctype="multipart/form-data" 它應該可以解決您的問題。

enctype="multipart/form-data"

到您的<form>元素。 解決了我的問題。

如果使用腳本文件來呈現文件,則需要從腳本文件中檢索在表單類中指定的enctype信息。 <form enctype="<?php echo $this->element->getAttrib("enctype"); ?>">

很有可能未激活php擴展名fileinfo。

當我注釋掉以下內容時,我遇到了相同的錯誤:

->setDestination($this->_config->folder->ugc);
->addValidator(Kvadrat_Form_Element_File::VALIDATE_COUNT, true, 1);
->addValidator(Kvadrat_Form_Element_File::VALIDATE_SIZE, true, 5 * 102400);

(我注釋掉了,就像使用FormData分別上傳文件一樣)

因此,我沒有對此發表評論,並且所有這些再次起作用。

請檢查您的php.ini文件並增加upload_max_filesize 默認情況下,它是2M(2兆字節)。 另外,為了能夠發布大小超過2M的文件,您需要更新post_max_size

您似乎錯過了目的地:

$logo->setLabel('Group logo')
     ->setDestination('/var/www/upload')
     ...

您可能要確保該文件夾可由Web服務器寫入。

您的尺寸驗證器不正確。 您應該使用以下格式:

->addValidator('Size', false, array('max' => '5242880'))

驗證程序檢查文件的大小== 5242880,而不是<= 5242880。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM