Страница 1 из 1

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

СообщениеДобавлено: 31 июл 2015, 12:16
REM
Вопрос возник когда возникла необходимость загрузить файл и создать ссылку на него в информационных страницах.
Изучив файл 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 загружать файлы.

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

СообщениеДобавлено: 31 июл 2015, 13:07
Xpycm
Скорее всего имеем две почти одинаковые функции, т.к эта область не дождалась рефакторинга ( ведь, по сути, можно объединить в одну функцию, с добавлением switch/case ). И, видимо, уже не дождётся :-) Или, возможно, одна из этих функций вообще нигде не используется.

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

СообщениеДобавлено: 03 авг 2015, 06:59
REM
Согласен, для представления прайса компании есть все необходимые возможности, галерея работает с изображениями. Но вот возникла необходимость для создания некого каталога с файлами, ну например перечень необходимой литературы и ссылка на скачивание файла. как правило эти файлы в формате pdf, doc, docx, и т.д. для этого во и необходимо загружать файл на сервер, притом не всегда удобна md5 имя файла (т.к. пользователь получив файл наверняка захочет иметь имя файла адекватное названию произведения и статьи). А инструмента для загрузки нет. Что можно сделать в этом случае?

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

СообщениеДобавлено: 03 авг 2015, 08:32
Xpycm
Инструментов для загрузки файлов очень много.

Выбирайте понравившийся:
https://www.google.ru/search?q=yii+upload+file
https://www.google.ru/search?q=jquery+upload+file