Проблема с загрузкой файлов Есть решение
Сразу скажу, что я был на странице https://developers.webasyst.ru...
Есть плагин, который с формы на фронте должен загрузить файл на сервер (что дальше этот плагин должен делать с файлом по сути не важно)
Есть форма:
<form action="" id="js_vin_form" enctype="multipart/form-data"> <input type="file" name="image" class="js_input_file"> <input type="submit" value="[`Send a request`]" class="main_button"> </form>
Есть js:
function podbor_send_file_action(params){ /* params = object{ 'data_to_send', 'handler', 'callback', 'dom' }; */ console.log('what i try send:', params.data_to_send); $.ajax({ type: 'POST', url: params.handler, cache: false, contentType: false, processData: false, data: params.data_to_send, dataType : 'json', success: function(data, textStatus, jqXHR ){ params.callback(data, params.dom); } }).fail(function(data) { console.log("error", JSON.stringify(data)); console.log("error", data); }); } function vin_form_file_callback(data, dom){ console.log('answer: ', data); } $('#js_vin_form').on('submit', function (event) { event.preventDefault(); var file_data = new FormData(); file_data.file = $(this).find('.js_input_file')[0].files[0]; podbor_send_file_action({data_to_send:file_data, handler:"/info/req2b24/upl-file/", callback:vin_form_file_callback, dom:$(this)}); return false; });
Что выводится в консоль непосредственно перед отправкой в строке "console.log('what i try send:', params.data_to_send);":
Т.к. отправляется это добро через ajax то есть вот такой вот контроллер, в котором я пока что просто пытаюсь получить файл из формы:
class siteReq2b24PluginFrontendUplController extends waJsonController { public $my_response; public function execute(){ $this->my_response = array(); $file = waRequest::file('image'); $this->my_response['file'] = $file; $this->my_response['files'] = $_FILES; $this->my_response['file_uploaded'] = $file->uploaded(); $this->response = $this->my_response; } }
И вот что я вижу в качестве ответа:
Если использовать пример из шаблона + js то файл будет находиться в $_FILES, однако по какой-то причине webasyst видимо отсекает файл.
Вопрос: как мне через ajax загрузить файл на сервер?
P.S. Что забавно, пришлось редактировать данный пост, потому что в первый раз скриншоты не приложились=)
4 ответа
Форум во многих местах апострофы рубанул и заменил их на код
Пишу по памяти, могу где-то опечататься.
у меня же в примере по сути отправка так же и происходит.
Короче ошибка была в том, что я файл добавлял через точку, как в объект, а надо было через append. С самого начала так и сделал, но сбило с толку, что при добавлении через append в консоли показывает что внутри ничего нет, хотя на самом деле есть, а при добавлении через точку в консоли все хорошо, а на самом деле ничего нет. вот так