我在Google上到處尋找,但我看不到有沒有辦法做到這一點 - 我有我的Magento產品的自定義選項,允許客戶上傳文件。但我需要對此設置一個文件大小限制,以阻止有人給我發送一個99GB文件,從而關閉服務器。Magento自定義選項上傳的最大文件大小?
肯定有某處我可以設置它?
我在Google上到處尋找,但我看不到有沒有辦法做到這一點 - 我有我的Magento產品的自定義選項,允許客戶上傳文件。但我需要對此設置一個文件大小限制,以阻止有人給我發送一個99GB文件,從而關閉服務器。Magento自定義選項上傳的最大文件大小?
肯定有某處我可以設置它?
這與php設置upload_max_filesize
有關。您可以從的php.ini改變這一點,受影響的其他變量post_max_size
也派出一切都必須適合內存(可通過形式發佈的數據量)/盤
好吧,我已經看到,這也可以在.htaccess中覆蓋:http://www.maheshchari.com/increase-php-file-upload -limit/ 感謝誰把我的問題投下來btw。我應該問一個誠實的問題而道歉。 –
閱讀網站的常見問題,然後你就會明白倒票:( –
閱讀常見問題,仍然不明白問題。這裏有很多Magento的問題,我只是問是否有一個設置Magento(代碼或管理員)允許我控制其功能的某個方面,我得到了我的答案,現在任何其他有類似問題但不確定的人都會得到答案,太好了! –
您可以更改最大尺寸屬性通過.htaccess
,這是真的。但是對於給定的界面,您可以通過回調函數在Magento中使用Varien_File_Uploader
更加細化。所以,你可以設置應用程序的大小有一個崗位價值50MB
寬最大的網站與.htaccess
文件,但進一步限制某一接口上的文件限制,10MB
對於A 20MB
爲B,等等...
重新使用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中使用。
該驗證在IE9或更低版本中無效。 – kiatng
我應該提到我正在使用Magento 1.4.2.0 –