Всем доброго вечера, прочесал форум, но ничего того что нужно мне, не нашел.
Проблема: Загрузка картинок с помощью nicEdit работает, но загружает их на свои сервера.
Что нужно: Чтобы картинки загружались на сервер где лежит весь сайт.
Что я имею: контроллер который любезно предоставили ребята из nicEdit
Код: Выделить всё<?php
/
Контроллер загрузки файла на сервер
Обрабатывает загрузку изображения из редактора nicEdit
Возвращает в редактор путь к изображению на сервере
Сохранить изображения, загруженные на компьютер пользователя в каталог, и
возвращения URL изображения на клиента для использования в NicEdit
/
defineNICUPLOAD_PATH, .img; //путь к папке загрузки
defineNICUPLOAD_URI, /img; //url к папке загрузки
ifdefinedBASEPATH exitNo direct script access allowed;
class Uploadnic extends CI_Controller
//разрешенные расширения файлов
private nicupload_allowed_extensions;
private rfc1867 ;
//конструктор
function __construct
parent::__construct;
//иницифлизируем массив разрешенных расширений файлов
this->nicupload_allowed_extensions = arrayjpg,jpeg,png,gif,bmp;
this->rfc1867 = function_existsapc_fetch & ini_getapc.rfc1867;
function index
error=array;
//Если функции кодрования не существует заполняем массив ошибок
iffunction_existsjson_encode
array_pusherror, Передача изображения на хост не имеет необходимых зависимостей json_encode/decode;
//хрен знает, что за ай ди получаем методом пост
id=this->input->postAPC_UPLOAD_PROGRESS;
//если идентификатор пустой
ifemptyid
//берем его из url в третьем сегменте
id = this->uri->segment5;
//Если мeтод запроса post
if_SERVERREQUEST_METHOD==POST
//если айди пустой или не является числом
ifemptyid is_numericid
//вызываем метод который выведет нам текс ошибки
this->nicupload_errorНеверный идентификатор загрузки;
//если нет директории NICUPLOAD_PATH или эта директория защищена от записи
ifis_dirNICUPLOAD_PATH is_writableNICUPLOAD_PATH
this->nicupload_errorКаталог .NICUPLOAD_PATH. должен существовать на сервере и запись в него должна быть разрешена.;
//получаем имя файла из массива files
file = _FILESfile;
//получаем временное имя файла
image = filetmp_name;
//устанавливаем максимальный размер загружаемого файла
max_upload_size = this->ini_max_upload_size;// ini_max_upload_size;
iffile
this->nicupload_errorДолжно быть меньше - . this->bytes_to_readablemax_upload_size;
//вычисляем расширение
ext = strtolowersubstrstrrchrfilename, ., 1;
//получаемразмер загружаемого файла
size = getimagesizeimage;
//если размер нулевой или расширение не попадает в список допустимых расширений
ifsize in_arrayext, this->nicupload_allowed_extensions
//выводим сообщение об ошибке
this->nicupload_errorНеверный файл изображения, должно быть реальное изображение меньше, чем . this->bytes_to_readablemax_upload_size;
//задаем новое имя файлу
filename = id...ext;
//задаем путь к изображению на сервере
path = NICUPLOAD_PATH./.filename;
//####################### загрузка файла ###################//
configupload_path = NICUPLOAD_PATH./img/;
configallowed_types = nicupload_allowed_extensions;
configmax_size = max_upload_size;
configfile_name = filename;
configremove_spaces = TRUE;
//загружаем библиотеку upload и передем массив конфиг
this->load->libraryupload, config;
ifmove_uploaded_fileimage, path
this->nicupload_errorОшибка сервера, не удалось переместить файл;
ifthis->rfc1867
status = apc_fetchupload_.id;
ifstatus
status = array;
statusdone = 1;
statuswidth = size0;
statusurl = this->nicupload_file_urifilename;
ifrfc1867
apc_storeupload_.id, status;
this->nicupload_outputstatus, rfc1867;
exit;
else ifisset_GETcheck
check = _GETcheck;
ifis_numericcheck
this->nicupload_errorНеверный загрузить прогресс ID;
ifrfc1867
status = apc_fetchupload_.check;
ifstatustotal > 500000 & statuscurrent/statustotal < 0.9 // Large file and we are < 90 complete
statusinterval = 3000;
else ifstatustotal > 200000 & statuscurrent/statustotal < 0.8 // Is this a largeish file and we are < 80 complete
statusinterval = 2000;
else
statusinterval = 1000;
this->nicupload_outputstatus;
else
status = array;
statusnoprogress = true;
foreachnicupload_allowed_extensions as e
iffile_existsNICUPLOAD_PATH./.check...e
ext = e;
break;
ifext
statusurl = nicupload_file_uricheck...ext;
this->nicupload_outputstatus;
/
param <type> msg
/
function nicupload_errormsg
echo this->nicupload_outputarrayerror => msg;
/
param <type> status
param <type> showLoadingMsg
/
function nicupload_outputstatus, showLoadingMsg = false
script =
try
._SERVERREQUEST_METHOD==POST ? top. : .nicUploadButton.statusCb.json_encodestatus.;
catche alerte.message; ;
if_SERVERREQUEST_METHOD==POST
echo <script>.script.</script>;
else
echo script;
if_SERVERREQUEST_METHOD==POST & showLoadingMsg
echo
<html><body>
<div id=uploadingMessage style=text-align: center; font-size: 14px;>
<img src=.base_url.nicEdit/ajax-loader.gif style=float: right; margin-right: 40px; />
<strong>Загрузка...</strong>
Please wait
</div>
</body></html>;
exit;
/
param <type> filename
return <type>
/
function nicupload_file_urifilename
return NICUPLOAD_URI./img/.filename;
/
return <type>
/
function ini_max_upload_size
post_size = ini_getpost_max_size;
upload_size = ini_getupload_max_filesize;
ifpost_size post_size = 8M;
ifupload_size upload_size = 2M;
return minthis->ini_bytes_from_stringpost_size, this->ini_bytes_from_stringupload_size ;
/
param <type> val
return int
/
function ini_bytes_from_stringval
val = trimval;
last = strtolowervalstrlenval-1;
switchlast
// Модификатор G доступен, начиная с PHP 5.1.0
case g:
val = 1024;
case m:
val = 1024;
case k:
val = 1024;
return val;
/
param <type> bytes
return <type>
/
function bytes_to_readable bytes
if bytes<=0
return 0 Byte;
convention=1000; //1000->10x1024->2x
s=arrayB, kB, MB, GB, TB, PB, EB, ZB;
e=floorlogbytes,convention;
return roundbytes/powconvention,e,2. .se;
?>
и собственно ответ от сервера
Код: Выделить всё<script>
try
top.nicUploadButton.statusCberror:u041du0435u0432u0435u0440u043du044bu0439 u0438u0434u0435u043du0442u0438u0444u0438u043au0430u0442u043eu0440 u0437u0430u0433u0440u0443u0437u043au0438;
catche alerte.message; </script>
Проблема: Загрузка картинок с помощью nicEdit работает, но загружает их на свои сервера.
Что нужно: Чтобы картинки загружались на сервер где лежит весь сайт.
Что я имею: контроллер который любезно предоставили ребята из nicEdit
Код: Выделить всё<?php
/
Контроллер загрузки файла на сервер
Обрабатывает загрузку изображения из редактора nicEdit
Возвращает в редактор путь к изображению на сервере
Сохранить изображения, загруженные на компьютер пользователя в каталог, и
возвращения URL изображения на клиента для использования в NicEdit
/
defineNICUPLOAD_PATH, .img; //путь к папке загрузки
defineNICUPLOAD_URI, /img; //url к папке загрузки
ifdefinedBASEPATH exitNo direct script access allowed;
class Uploadnic extends CI_Controller
//разрешенные расширения файлов
private nicupload_allowed_extensions;
private rfc1867 ;
//конструктор
function __construct
parent::__construct;
//иницифлизируем массив разрешенных расширений файлов
this->nicupload_allowed_extensions = arrayjpg,jpeg,png,gif,bmp;
this->rfc1867 = function_existsapc_fetch & ini_getapc.rfc1867;
function index
error=array;
//Если функции кодрования не существует заполняем массив ошибок
iffunction_existsjson_encode
array_pusherror, Передача изображения на хост не имеет необходимых зависимостей json_encode/decode;
//хрен знает, что за ай ди получаем методом пост
id=this->input->postAPC_UPLOAD_PROGRESS;
//если идентификатор пустой
ifemptyid
//берем его из url в третьем сегменте
id = this->uri->segment5;
//Если мeтод запроса post
if_SERVERREQUEST_METHOD==POST
//если айди пустой или не является числом
ifemptyid is_numericid
//вызываем метод который выведет нам текс ошибки
this->nicupload_errorНеверный идентификатор загрузки;
//если нет директории NICUPLOAD_PATH или эта директория защищена от записи
ifis_dirNICUPLOAD_PATH is_writableNICUPLOAD_PATH
this->nicupload_errorКаталог .NICUPLOAD_PATH. должен существовать на сервере и запись в него должна быть разрешена.;
//получаем имя файла из массива files
file = _FILESfile;
//получаем временное имя файла
image = filetmp_name;
//устанавливаем максимальный размер загружаемого файла
max_upload_size = this->ini_max_upload_size;// ini_max_upload_size;
iffile
this->nicupload_errorДолжно быть меньше - . this->bytes_to_readablemax_upload_size;
//вычисляем расширение
ext = strtolowersubstrstrrchrfilename, ., 1;
//получаемразмер загружаемого файла
size = getimagesizeimage;
//если размер нулевой или расширение не попадает в список допустимых расширений
ifsize in_arrayext, this->nicupload_allowed_extensions
//выводим сообщение об ошибке
this->nicupload_errorНеверный файл изображения, должно быть реальное изображение меньше, чем . this->bytes_to_readablemax_upload_size;
//задаем новое имя файлу
filename = id...ext;
//задаем путь к изображению на сервере
path = NICUPLOAD_PATH./.filename;
//####################### загрузка файла ###################//
configupload_path = NICUPLOAD_PATH./img/;
configallowed_types = nicupload_allowed_extensions;
configmax_size = max_upload_size;
configfile_name = filename;
configremove_spaces = TRUE;
//загружаем библиотеку upload и передем массив конфиг
this->load->libraryupload, config;
ifmove_uploaded_fileimage, path
this->nicupload_errorОшибка сервера, не удалось переместить файл;
ifthis->rfc1867
status = apc_fetchupload_.id;
ifstatus
status = array;
statusdone = 1;
statuswidth = size0;
statusurl = this->nicupload_file_urifilename;
ifrfc1867
apc_storeupload_.id, status;
this->nicupload_outputstatus, rfc1867;
exit;
else ifisset_GETcheck
check = _GETcheck;
ifis_numericcheck
this->nicupload_errorНеверный загрузить прогресс ID;
ifrfc1867
status = apc_fetchupload_.check;
ifstatustotal > 500000 & statuscurrent/statustotal < 0.9 // Large file and we are < 90 complete
statusinterval = 3000;
else ifstatustotal > 200000 & statuscurrent/statustotal < 0.8 // Is this a largeish file and we are < 80 complete
statusinterval = 2000;
else
statusinterval = 1000;
this->nicupload_outputstatus;
else
status = array;
statusnoprogress = true;
foreachnicupload_allowed_extensions as e
iffile_existsNICUPLOAD_PATH./.check...e
ext = e;
break;
ifext
statusurl = nicupload_file_uricheck...ext;
this->nicupload_outputstatus;
/
param <type> msg
/
function nicupload_errormsg
echo this->nicupload_outputarrayerror => msg;
/
param <type> status
param <type> showLoadingMsg
/
function nicupload_outputstatus, showLoadingMsg = false
script =
try
._SERVERREQUEST_METHOD==POST ? top. : .nicUploadButton.statusCb.json_encodestatus.;
catche alerte.message; ;
if_SERVERREQUEST_METHOD==POST
echo <script>.script.</script>;
else
echo script;
if_SERVERREQUEST_METHOD==POST & showLoadingMsg
echo
<html><body>
<div id=uploadingMessage style=text-align: center; font-size: 14px;>
<img src=.base_url.nicEdit/ajax-loader.gif style=float: right; margin-right: 40px; />
<strong>Загрузка...</strong>
Please wait
</div>
</body></html>;
exit;
/
param <type> filename
return <type>
/
function nicupload_file_urifilename
return NICUPLOAD_URI./img/.filename;
/
return <type>
/
function ini_max_upload_size
post_size = ini_getpost_max_size;
upload_size = ini_getupload_max_filesize;
ifpost_size post_size = 8M;
ifupload_size upload_size = 2M;
return minthis->ini_bytes_from_stringpost_size, this->ini_bytes_from_stringupload_size ;
/
param <type> val
return int
/
function ini_bytes_from_stringval
val = trimval;
last = strtolowervalstrlenval-1;
switchlast
// Модификатор G доступен, начиная с PHP 5.1.0
case g:
val = 1024;
case m:
val = 1024;
case k:
val = 1024;
return val;
/
param <type> bytes
return <type>
/
function bytes_to_readable bytes
if bytes<=0
return 0 Byte;
convention=1000; //1000->10x1024->2x
s=arrayB, kB, MB, GB, TB, PB, EB, ZB;
e=floorlogbytes,convention;
return roundbytes/powconvention,e,2. .se;
?>
и собственно ответ от сервера
Код: Выделить всё<script>
try
top.nicUploadButton.statusCberror:u041du0435u0432u0435u0440u043du044bu0439 u0438u0434u0435u043du0442u0438u0444u0438u043au0430u0442u043eu0440 u0437u0430u0433u0440u0443u0437u043au0438;
catche alerte.message; </script>