Максимальный размер файла для пользовательских загрузок Magento? - PullRequest
0 голосов
/ 08 сентября 2011

Я искал повсюду в Google, но я не вижу, есть ли способ сделать это - у меня есть собственные опции в моих продуктах Magento, которые позволяют клиенту загружать файл. Но мне нужно установить ограничение на размер файла, чтобы кто-нибудь не отправил мне файл размером 99 ГБ, который отключает сервер.

Наверняка должно быть где-нибудь, где я могу установить это?

Ответы [ 3 ]

1 голос
/ 07 июля 2014

Вы можете изменить атрибут максимального размера с помощью .htaccess, это правда.Но вы можете быть более детализированными внутри Magento через функцию обратного вызова с Varien_File_Uploader для данного интерфейса.Таким образом, вы можете установить размер приложения, чтобы иметь значение поста 50MB в качестве максимальной ширины сайта с файлом .htaccess, но далее ограничить ограничения на файлы на определенных интерфейсах, 10MB для A 20MB для B ии так далее ...

1 голос
/ 08 сентября 2011

Это связано с настройкой php upload_max_filesize. Вы можете изменить это значение на php.ini , а также повлиять на другие переменные post_max_size (объем данных, которые могут быть отправлены с помощью форм), а также все отправленные данные должны соответствовать памяти / диску

см. Больше в руководстве по php

0 голосов
/ 19 апреля 2016

Повторно используя поле image_size_y в таблице catalog_product_option , здесь мы можем установить максимальный размер файла.Затем нам нужно перезаписать 2 основных файла и 2 phtml файлов.
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.\ app \ design \ frontend \ yourpackage \ default \ template \ catalog \ product \ view \ options \ type \ file.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. \ app \ design \ frontend \ yourpackage \ default \ template\ catalog \ product \ view \ options.phtml, добавьте следующие 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...