Загрузка пользовательских изображений в Magento не работает - PullRequest
1 голос
/ 09 ноября 2011

Мне нужно создать поле загрузки изображений для сообщений в модуле блога Magento (блог AW).Поэтому каждый пост должен содержать изображение.

Я отредактировал следующие файлы: / home / клиенты / веб-сайты / w_gale / public_html / gale / app / code / community / AW / Blog / Block / Manage / Blog/Edit/Tab/Form.php

добавил набор полей следующим образом:

$fieldset->addField('fileinputname', 'image', array(
            'label'     => Mage::helper('blog')->__('Upload image'),
            'required'  => false,
            'name'      => 'fileinputname',
            'required'  => true,
            'style'     => 'height:100px;border:2px solid #999;',
    )); 

поверх этого файла, в нужном месте я определил форму следующим образом:

$form = new Varien_Data_Form(array(
            'id' => 'edit_form',
            'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
            'method' => 'post',
            'enctype' => 'multipart/form-data',
       )
    );

В Blogcontroller.php я добавил следующий код, просто ниже if ($data = $this->getRequest()->getPost()) { line

if(isset($_FILES['fileinputname']['name']) && (file_exists($_FILES['fileinputname']['tmp_name']))) {
            try {

                $uploader = new Varien_File_Uploader('fileinputname');

                $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); // or pdf or anything

                $uploader->setAllowRenameFiles(true);
                $uploader->setFilesDispersion(false);

                $path = Mage::getBaseDir('media') . DS ;

                $uploader->save($path, $_FILES['fileinputname']['name']);

                $data['imageurl'] = $_FILES['fileinputname']['name'];

            } catch(Exception $e) {

            }
        } else {       

            if(isset($data['fileinputname']['delete']) && $data['fileinputname']['delete'] == 1)
                $data['imageurl'] = '';
            else
                unset($data['fileinputname']);
        }

Однако загрузка не работает.Что я делаю неправильно?Я добавил специальную строку в соответствующее поле в базе данных.В разделе внешнего интерфейса отображается значение базы данных, когда я вводю его вручную.

Спасибо

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Этот код метода от помощника данных, который загружает изображение. Вам необходимо реализовать метод getBaseDir() (который возвращает dir там, где вы хотите сохранить загруженные файлы) самостоятельно.

/**
 * Upload image and return uploaded image file name or false
 *
 * @throws Mage_Core_Exception
 * @param string $scope the request key for file
 * @return bool|string
 */
public function uploadImage($scope)
{
    $adapter  = new Zend_File_Transfer_Adapter_Http();
    $adapter->addValidator('ImageSize', true, $this->_imageSize);
    $adapter->addValidator('Size', true, $this->_maxFileSize);
    if ($adapter->isUploaded($scope)) {
        // validate image
        if (!$adapter->isValid($scope)) {
            Mage::throwException(Mage::helper('mycompany_mymodule')->__('Uploaded image is not valid'));
        }
        $upload = new Varien_File_Uploader($scope);
        $upload->setAllowCreateFolders(true);
        $upload->setAllowedExtensions(array('jpg', 'gif', 'png'));
        $upload->setAllowRenameFiles(true);
        $upload->setFilesDispersion(false);
        if ($upload->save($this->getBaseDir())) {
            return $upload->getUploadedFileName();
        }
    }
    return false;
}
0 голосов
/ 03 июля 2013

Вы используете правильный код. Я решил проблему, используя правильный тип данных MYSQL. Когда я изменил тип данных с 'text' на 'varchar (255)', это решило проблему

И ... убедитесь, что вы добавили следующий код:

$form = new Varien_Data_Form(array(
        'id' => 'edit_form',
        'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
        'method' => 'post',
        'enctype' => 'multipart/form-data',
   )
);

в /app/code/community/AW/Blog/Block/Manage/Blog/Edit/Form.php НЕ: приложение / код / ​​сообщество / AW / блог / блок / управление / блог / редактирование / вкладка / Form.php

...