powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN(да, вы не ослышались): file upload с axios.
4 сообщений из 4, страница 1 из 1
ZEN(да, вы не ослышались): file upload с axios.
    #39932628
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вдруг понадобится история про file upload. Мне сегодня зашла - нужно было затащить годный аплоад в зен, взял из другого (не каше) проекта и вот делюсь:

Наследуемся от дефолтного контрола и добавляем ему айдишник (чтоб найти не компонент, а конкретный input - если можно по другому, подскажете)

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Class zen.ui.fileUpload Extends %ZEN.Component.fileUpload
{

/// This is the XML namespace for this component.
Parameter NAMESPACE = "http://ЯндексШобТыСдох/zen";

Property controlId As %String;

Method %DrawHTML()
{
	Set disabled = $S(..disabled:"disabled",1:"")
	Set ro = $S(..readOnly:"readonly",1:"")
	Set multiple = $S(..multiple:"multiple=""multiple""",1:"")	
	s ..controlId = ..%MakeId("control")
	&html<<input type="file" class="#(..controlClass)#" id="#(..controlId)#" #(..%Attr("title",..title))# #(..%Name())# #(multiple)# #(disabled)# #(ro)# #(..%Attr("size",..size))# #(..%Attr("accept",..accept))# #(..%Attr("maxlength",..maxlength))# #(..%Attr("style",..controlStyle))# #(..%Attr("tabindex",..tabIndex))# #(..%GetEventHandlers())#/>>
}

}



Приаттачиваем axios на страничку

Код: html
1.
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>



Сам контрол примерно так в итоге на странице выглядит:

Код: html
1.
2.
<v:fileUpload name="fileUpload" id="fileUpload" />
<button caption="Добавить файл" onclick="zenPage.submit();" />



Отправка с ZEN страницы (сорян за jquery, но и без него найдете):

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ClientMethod submit() [ Language = javascript ]
{
    var data = new FormData()
    var imagefile = $("#"+zen('fileUpload').controlId)
    data.append('file', imagefile[0].files[0])
    axios.post('http://ПРИЁМНИК', data, {headers: {'Content-Type': 'multipart/form-data'}})
      .then(function (response) {
        alert(response.data.file);
      })
      .catch(function (error) {
        console.log(error);
      });
}



И тут Фаааанннн ;)

Ну и в конце вопрос: Почему imagefile[0].files[0] ???? Работает, конечно, но почему imagefile [0] .files[0]?
...
Рейтинг: 0 / 0
ZEN(да, вы не ослышались): file upload с axios.
    #39932837
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov,

Потому что ты jQuery пользуешься и в твоем imagefile будет ссылка на jQuery а не HTML объект. Сам объект jQuery как раз в imagefile[0] хранит.
...
Рейтинг: 0 / 0
ZEN(да, вы не ослышались): file upload с axios.
    #39932838
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist,

Если бы был обычный

var imagefile = document.getElementById(zen('fileUpload').controlId)

то и никакой [0] не нужен
...
Рейтинг: 0 / 0
ZEN(да, вы не ослышались): file upload с axios.
    #39932934
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist
Потому что ты jQuery пользуешься

Точно! Тащил я это из проекта на vue.js - там без jQuery же.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN(да, вы не ослышались): file upload с axios.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]