Загрузка файлов

Обсуждение смены дизайна, дополнительного функционала, SEO и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Загрузка файлов

Сообщение REM » 31 июл 2015, 12:16

Вопрос возник когда возникла необходимость загрузить файл и создать ссылку на него в информационных страницах.
Изучив файл SiteController.php я обнаружил следующие функции:
Код: Выделить всё
public function actionUploadFiles() {
        
$allowExtension = array('doc','docx','xml','xmls','pdf');

        if(
Yii::app()->user->getState("isAdmin")){
            
$type Yii::app()->request->getQuery('type');
            
Controller::disableProfiler(); // yii-debug-toolbar disabler

            
if($type == 'fileUpload'){
                if (!empty(
$_FILES['upload']['name']) && !Yii::app()->user->isGuest) {
                    
//$dir = Yii::getPathOfAlias('webroot.upload') . '/' . Yii::app()->user->id . '/';
                    
$dir Yii::getPathOfAlias('webroot.uploads.editor') . '/';
                    if (!
is_dir($dir))
                        @
mkdir($dir'0777'true);

                    
$file CUploadedFile::getInstanceByName('upload');
                    if (
$file) {
                        
$newName md5(time()) . '.' $file->extensionName;

                        
$error '';
                        
$callback $_GET['CKEditorFuncNum'];

                        if (
in_array($file->extensionName$allowExtension)) {
                            if (
$file->saveAs($dir $newName)) {
                                
$httpPath Yii::app()->getBaseUrl(true).'/uploads/editor/file/' $newName;
                            }
                            else {
                                
$error 'Some error occured please try again later';
                                
$httpPath '';
                            }
                        }
                        else {
                            
$error 'The file is not the image';
                            
$httpPath '';
                        }

                        echo 
"<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(".$callback.",  \"".$httpPath."\", \"".$error."\" );</script>";
                    }
                }
            }
        }
    } 

расширение pdf я добавил уже сам, только не через добавление ссылки, не через добавление рисунка файл не грузится с этим расширением.
Тогда пришлось добавить расширение в функцию:
Код: Выделить всё
public function actionUploadImage() {
        
$allowExtension = array('png','jpg','gif','jpeg','pdf');

        if(
Yii::app()->user->getState("isAdmin")){
            
$type Yii::app()->request->getQuery('type');
            
Controller::disableProfiler(); // yii-debug-toolbar disabler

            
if($type == 'imageUpload'){
                if (!empty(
$_FILES['upload']['name']) && !Yii::app()->user->isGuest) {
                    
//$dir = Yii::getPathOfAlias('webroot.upload') . '/' . Yii::app()->user->id . '/';
                    
$dir Yii::getPathOfAlias('webroot.uploads.editor') . '/';
                    if (!
is_dir($dir))
                        @
mkdir($dir'0777'true);

                    
$file CUploadedFile::getInstanceByName('upload');
                    if (
$file) {
                        
$newName md5(time()) . '.' $file->extensionName;

                        
$error '';
                        
$callback $_GET['CKEditorFuncNum'];

                        if (
in_array($file->extensionName$allowExtension)) {
                            if (
$file->saveAs($dir $newName)) {
                                
$httpPath Yii::app()->getBaseUrl(true).'/uploads/editor/' $newName;
                            }
                            else {
                                
$error 'Some error occured please try again later';
                                
$httpPath '';
                            }
                        }
                        else {
                            
$error 'The file is not the image';
                            
$httpPath '';
                        }

                        echo 
"<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(".$callback.",  \"".$httpPath."\", \"".$error."\" );</script>";
                    }
                }
            }
        }
    }

Тогда через загрузку изображений файл удалось загрузить, тогда зачем первая функция.
Если я что то не понял тогда объясните как через ckeditor загружать файлы.
Мысль - это оргазм мозга. Те, кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать. (М.Кундера)
Аватара пользователя
REM
Гражданин
Гражданин
 
Сообщения: 151
Зарегистрирован: 28 мар 2014, 07:06
Откуда: Первоуральск
Очки репутации: 5

Re: Загрузка файлов

Сообщение Xpycm » 31 июл 2015, 13:07

Скорее всего имеем две почти одинаковые функции, т.к эта область не дождалась рефакторинга ( ведь, по сути, можно объединить в одну функцию, с добавлением switch/case ). И, видимо, уже не дождётся :-) Или, возможно, одна из этих функций вообще нигде не используется.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Загрузка файлов

Сообщение REM » 03 авг 2015, 06:59

Согласен, для представления прайса компании есть все необходимые возможности, галерея работает с изображениями. Но вот возникла необходимость для создания некого каталога с файлами, ну например перечень необходимой литературы и ссылка на скачивание файла. как правило эти файлы в формате pdf, doc, docx, и т.д. для этого во и необходимо загружать файл на сервер, притом не всегда удобна md5 имя файла (т.к. пользователь получив файл наверняка захочет иметь имя файла адекватное названию произведения и статьи). А инструмента для загрузки нет. Что можно сделать в этом случае?
Мысль - это оргазм мозга. Те, кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать. (М.Кундера)
Аватара пользователя
REM
Гражданин
Гражданин
 
Сообщения: 151
Зарегистрирован: 28 мар 2014, 07:06
Откуда: Первоуральск
Очки репутации: 5

Re: Загрузка файлов

Сообщение Xpycm » 03 авг 2015, 08:32

Инструментов для загрузки файлов очень много.

Выбирайте понравившийся:
https://www.google.ru/search?q=yii+upload+file
https://www.google.ru/search?q=jquery+upload+file
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10