2011-09-08 142 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