Загрузка файлов
Добавлено: 31 июл 2015, 12:16
Вопрос возник когда возникла необходимость загрузить файл и создать ссылку на него в информационных страницах.
Изучив файл SiteController.php я обнаружил следующие функции:
расширение pdf я добавил уже сам, только не через добавление ссылки, не через добавление рисунка файл не грузится с этим расширением.
Тогда пришлось добавить расширение в функцию:
Тогда через загрузку изображений файл удалось загрузить, тогда зачем первая функция.
Если я что то не понял тогда объясните как через ckeditor загружать файлы.
Изучив файл 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 загружать файлы.