2011-09-08 63 views
0

我在Google上到處尋找,但我看不到有沒有辦法做到這一點 - 我有我的Magento產品的自定義選項,允許客戶上傳文件。但我需要對此設置一個文件大小限制,以阻止有人給我發送一個99GB文件,從而關閉服務器。Magento自定義選項上傳的最大文件大小?

肯定有某處我可以設置它?

+1

我應該提到我正在使用Magento 1.4.2.0 –

回答

1

這與php設置upload_max_filesize有關。您可以從的php.ini改變這一點,受影響的其他變量post_max_size也派出一切都必須適合內存(可通過形式發佈的數據量)/盤

see more from php manual

+0

好吧,我已經看到,這也可以在.htaccess中覆蓋:http://www.maheshchari.com/increase-php-file-upload -limit/ 感謝誰把我的問題投下來btw。我應該問一個誠實的問題而道歉。 –

+0

閱讀網站的常見問題,然後你就會明白倒票:( –

+0

閱讀常見問題,仍然不明白問題。這裏有很多Magento的問題,我只是問是否有一個設置Magento(代碼或管理員)允許我控制其功能的某個方面,我得到了我的答案,現在任何其他有類似問題但不確定的人都會得到答案,太好了! –

1

您可以更改最大尺寸屬性通過.htaccess,這是真的。但是對於給定的界面,您可以通過回調函數在Magento中使用Varien_File_Uploader更加細化。所以,你可以設置應用程序的大小有一個崗位價值50MB寬最大的網站與.htaccess文件,但進一步限制某一接口上的文件限制,10MB對於A 20MB爲B,等等...

0

重新使用image_size_y在表catalog_product_option,我們可以在這裏設置最大文件大小。然後,我們需要覆蓋2個核心文件和2個文件。
1.覆蓋Mage_Catalog_Model_Product_Option

protected function _afterLoad() 
{ 
    $this->setMaxFileSize(); 
    return parent::_afterLoad(); 
} 

public function setMaxFileSize() 
{ 
    if (!preg_match('/(jpg|png|bmp)/i', $this->getFileExtension())) { 
     $this->setData('max_file_size', $this->getImageSizeY()); 
     $this->setData('image_size_y', 0); 
    } else { 
     $this->setData('max_file_size', 0); 
    } 
    return $this; 
} 

2.覆蓋Mage_Catalog_Model_Product_Option_Type_File

public function setOption($option) 
{ 
    $option->setMaxFileSize(); 
    $this->_option = $option; 
    return $this; 
} 

protected function _getUploadMaxFilesize() 
{ 
    if ($kb = $this->getOption()->getMaxFileSize()) { 
     return min(parent::_getUploadMaxFilesize(), $kb*1024); 
    } 
    return parent::_getUploadMaxFilesize(); 
} 

protected function _bytesToMbytes($bytes) 
{ 
    return round($bytes/(1024 * 1024), 2); 
} 

3. \應用\設計\前端\ yourpackage \默認\模板\目錄\產品\視圖\選項\類型\文件一個.phtml:

<?php $_option = $this->getOption()->setMaxFileSize(); // replace first line of code ?> 
... 
<!-- add the following after <?php if ($_option->getImageSizeY() > 0): ?>...<?php endif; ?> --> 
<?php if ($_option->getMaxFileSize() > 0): ?> 
    <script type="text/javascript"> 
    $('options_<?php echo $_option->getId() ?>_file').addClassName('validate-file-size'); 
    $('options_<?php echo $_option->getId() ?>_file').setAttribute('max-file-size', <?php echo $_option->getMaxFileSize() ?>); 
    </script> 
    <p class="no-margin"><?php echo Mage::helper('catalog')->__('Maximum file size')?>: <strong><?php echo $_option->getMaxFileSize() ?> <?php echo Mage::helper('catalog')->__('KB')?></strong></p> 
<?php endif; ?>  

4 \程序\設計\前臺\ yourpackage \ DEFAULT \模板\目錄\產品\圖\ options.phtml,添加FOLL由於js:

Validation.add('validate-file-size', '<?php echo $this->jsQuoteEscape(Mage::helper('catalog')->__('Exceeded maximum file size'))?>', 
    function(value, elm) { 
     var maxsize = +elm.getAttribute('max-file-size') || 1024; // kb    
     var size = elm.files[0].size/1024; // kb 
     return maxsize > size; 
    } 
); 

以上在Magento 1.9.0.1上的Firefox測試中,驗證腳本可能無法在IE中使用。

+0

該驗證在IE9或更低版本中無效。 – kiatng