Посоветуйте какое-то нормальное расширение для аякс загрузки файлов ?
Установил EajaxUpload выдает ошибку при попытке загрузить файл (тут : viewtopic.php?f=3&t=7816 вроде уже решали но ссылка битая, не смог понять в чем проблема) несмотря на то что Токен в запросе передается. В коде проверил все вроде есть, но копать глубже не охота. + вроде уже есть новая версия плагина, а екстейшен не обновлялся вроде.
XUpload тоже что-то не очень пашет, там вроде тоже новая версия плагина есть, но работает он только с ихним демо кодом, свое что-то трудновато добавлять, много переписывать.
PUpload не подходит для моей задачи ...
Есть еще что-то нормальное? или у меня руки кривые? Или же нужно будет самому написать с новыми версиями ?
Что же это такое?!
Re: Что же это такое?!
думаю после этих слов ни кому не будет охота вам помогатьvova07 писал(а):но копать глубже не охота
Re: Что же это такое?!
Имелось введу что разбор чужого кода для меня в данной ситуации менее привлекателен чем написание самописного модуля.
Этот вывод я сделал только после того как прочитал тему что привел выше, погуглив еще, я нашел ту же ссылку где-то на другом форме, но она битая, но исходя из комментов там предлогалось переписать метод проверки запроса, и в случае необходимости отключать CSRF для нужного акшена ... после такого решения, охота разбирать данное расширение полностью пропало ... ибо как это грубейший костыль без каких либо обоснований. (Но я могу ошибаться, так как выводы делал чисто исходя из комментов)
То есть я не из ряда ... дайте мне готовый код ... а я скажу спасибо ... но в данной ситуации - может кто-то уже сравнивал существующие расширения и сделал для себя хороший выбор .... таким образом наведет на путь правильный.
Этот вывод я сделал только после того как прочитал тему что привел выше, погуглив еще, я нашел ту же ссылку где-то на другом форме, но она битая, но исходя из комментов там предлогалось переписать метод проверки запроса, и в случае необходимости отключать CSRF для нужного акшена ... после такого решения, охота разбирать данное расширение полностью пропало ... ибо как это грубейший костыль без каких либо обоснований. (Но я могу ошибаться, так как выводы делал чисто исходя из комментов)
То есть я не из ряда ... дайте мне готовый код ... а я скажу спасибо ... но в данной ситуации - может кто-то уже сравнивал существующие расширения и сделал для себя хороший выбор .... таким образом наведет на путь правильный.
Re: Что же это такое?!
Вся проблема в том, что токен не передается.vova07 писал(а):Посоветуйте какое-то нормальное расширение для аякс загрузки файлов ?
Установил EajaxUpload выдает ошибку при попытке загрузить файл (тут : viewtopic.php?f=3&t=7816 вроде уже решали но ссылка битая, не смог понять в чем проблема) несмотря на то что Токен в запросе передается.
Для обхода этого я использую следующее расширение, которое "отключает проверку на CSRF" :
Код: Выделить всё
<?
/**
* Description of HttpRequest
*
*
* Used in config/main.php
* <pre>
* 'request'=>array(
* 'class'=>'EHttpRequest',
* 'noCsrfValidationRoutes'=>array(
* '^services/wsdl.*$'
* ),
* 'enableCsrfValidation'=>true,
* 'enableCookieValidation'=>true,
* ),
* </pre>
*
* Every route will be interpreted as a regex pattern.
*
* @author alex
*/
class EHttpRequest extends CHttpRequest
{
public $noCsrfValidationRoutes = array();
protected function normalizeRequest()
{
parent::normalizeRequest();
if($_SERVER['REQUEST_METHOD'] != 'POST') return;
$route = Yii::app()->getUrlManager()->parseUrl($this);
if($this->enableCsrfValidation)
{
foreach($this->noCsrfValidationRoutes as $cr)
{
if(preg_match('#'.$cr.'#', $route)){
Yii::app()->detachEventHandler('onBeginRequest',array($this,'validateCsrfToken'));
Yii::trace('Route "'.$route.' passed without CSRF validation');
break; // found first route and break
}
}
}
}
}
Код: Выделить всё
'request'=>array(
'class' => 'ext.EHttpRequest',
'noCsrfValidationRoutes'=>array(
'^files/upload.*$', //т.е. если запросе начинается с "files/upload" , то CSRF будет проигнорирован
//'^test/EAjaxUpload.*$',
),
'enableCookieValidation'=>true,
'enableCsrfValidation'=>true,
),
Re: Что же это такое?!
kosenka спасибо за ответ! И за сам код.
(Видимо я правильно понял из комментов.)
Скажу почему мне не нравится это решение : (на 100% согласен что проблему она решает но ...) появляется лишнее телодвижение, для ГЕТ запросов, которое добавляет нагрузку без реальной надобности. (это грубый костыль как по мне).
Аргументирую ... ошибка состоит в том что запрос не передаёт "Токен", что само по себе означает что эта проблема решается простым , и правильным методом : "Вставка токена в запрос" - такая возможность есть всегда ... таким образом делать костыли для решение такой проблемы просто неправильно.
Но есть другая проблема : в запросе Токен вроде как передаётся, только вот неизвестно почему не работает.
Остаются два варианта : копать код, и разбираться что там вообще передаётся и как, или же взять последнюю версию Jquery-Upload-File или Fine-Upload и написать под определённый плагин свой модуль. (Несмотря на то что XUpload и Eajaxupload работают именно с ними, апгрейд плагина на их основе сделать будет трудно, только потому что сильно уж там все поменялось у разработчиков плгинов почему-то). Я думал что есть другие расширения, но видимо писать нужно будет ... или если времени не будет, то придется копать что есть
(Видимо я правильно понял из комментов.)
Скажу почему мне не нравится это решение : (на 100% согласен что проблему она решает но ...) появляется лишнее телодвижение, для ГЕТ запросов, которое добавляет нагрузку без реальной надобности. (это грубый костыль как по мне).
Аргументирую ... ошибка состоит в том что запрос не передаёт "Токен", что само по себе означает что эта проблема решается простым , и правильным методом : "Вставка токена в запрос" - такая возможность есть всегда ... таким образом делать костыли для решение такой проблемы просто неправильно.
Но есть другая проблема : в запросе Токен вроде как передаётся, только вот неизвестно почему не работает.
Остаются два варианта : копать код, и разбираться что там вообще передаётся и как, или же взять последнюю версию Jquery-Upload-File или Fine-Upload и написать под определённый плагин свой модуль. (Несмотря на то что XUpload и Eajaxupload работают именно с ними, апгрейд плагина на их основе сделать будет трудно, только потому что сильно уж там все поменялось у разработчиков плгинов почему-то). Я думал что есть другие расширения, но видимо писать нужно будет ... или если времени не будет, то придется копать что есть
Re: Что же это такое?!
Всем привет!
Тоже понадобилось подружить EAjaxUpload с CSRF не отключая проверку токена при загрузке файла. Никто случайно не нашел решения? Токен вроде передается, не понятно почему вылазит ошибка
Тоже понадобилось подружить EAjaxUpload с CSRF не отключая проверку токена при загрузке файла. Никто случайно не нашел решения? Токен вроде передается, не понятно почему вылазит ошибка