|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Всем привет, Нашел на форуме пример как загрузить файл используя CSP, но в Zen так сделать не получается. Не пойму куда при сабмите загружается файл(в СSP это %request.MimeData("FileStream")). Может кто-нибудь знает. Помогите плз. Спасибо. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2008, 11:33 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Вариант загрузки файла в БД: Class AttachedFile Extends %Persistent { Property FileData As %Stream.GlobalBinary; Property FileName As %String; Property FileSize As %Integer; } Class FileUpload Extends %ZEN.Component.page { Parameter APPLICATION = "TestUploadFile"; Parameter PAGENAME = "UploadFile"; /// Domain used for localization. Parameter DOMAIN; /// This Style block contains page-specific CSS style definitions. XData Style { <style type="text/css"> </style> } /// This XML block defines the contents of this page. XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ] { <page xmlns="http://www.intersystems.com/zen" title=""> <form id="FileForm" labelPosition="left" enctype="multipart/form-data"><!-- should be enctype="multipart/form-data" --> <fileUpload label="File:" id="File" name="File"/> <hgroup align="right"> <submit caption="Submit" action="submit"/><spacer width="5"/> <button caption="Cancel" onclick="window.close();"/> </hgroup> </form> </page> } /// Загрузка файла в базу как %Stream.GlobalBinary ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status { if $data(%request.MimeData("$V_File",1))&&$isobject(%request.MimeData("$V_File",1)) { set FileObj =##class(AttachedFile).%New() set FileObj.FileName = %request.MimeData("$V_File",1).FileName set FileObj.FileSize = %request.MimeData("$V_File",1).Size set FileObj.FileData = ##class(%Stream.GlobalBinary).%New() set stream = %request.GetMimeData("$V_File",1) Set status = FileObj.FileData.CopyFrom(stream) set status = FileObj.%Save() if $$$ISOK(status) { set ^CacheTempPav($zh,"rc")="OK" } else { do $system.Status.DecomposeStatus(status, .errors) merge ^CacheTempPav($zh,"rc")=errors } set status = FileObj.%Close() } Quit $$$OK } } ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2008, 10:18 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Если не хотите хранить файло в базе, то не составит большого труда взять streams из %request и положить в папку на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2008, 10:21 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Cпс биг, очень помог. Для того чтоб положить на диск сделал так: ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status { if $d(%request.MimeData("$V_File",1))&&$isobject(%request.MimeData("$V_File",1)) { s file=##class(%FileBinaryStream).%New() s file.Filename="E:/Stream/as.pdf" s stream=%request.GetMimeData("$V_File",1) s status=file.CopyFrom(stream) s status=file.%Save() } QUIT $$$OK } ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2008, 08:52 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
kravtВариант загрузки файла в БД: Class AttachedFile Extends %Persistent { Property FileData As %Stream.GlobalBinary; Property FileName As %String; Property FileSize As %Integer; } Class FileUpload Extends %ZEN.Component.page { Parameter APPLICATION = "TestUploadFile"; Parameter PAGENAME = "UploadFile"; /// Domain used for localization. Parameter DOMAIN; /// This Style block contains page-specific CSS style definitions. XData Style { <style type="text/css"> </style> } /// This XML block defines the contents of this page. XData Contents [ XMLNamespace = " http://www.intersystems.com/zen" ] { <page xmlns=" http://www.intersystems.com/zen" title=""> <form id="FileForm" labelPosition="left" enctype="multipart/form-data"><!-- should be enctype="multipart/form-data" --> <fileUpload label="File:" id="File" name="File"/> <hgroup align="right"> <submit caption="Submit" action="submit"/><spacer width="5"/> <button caption="Cancel" onclick="window.close();"/> </hgroup> </form> </page> } /// Загрузка файла в базу как %Stream.GlobalBinary ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status { if $data(%request.MimeData("$V_File",1))&&$isobject(%request.MimeData("$V_File",1)) { set FileObj =##class(AttachedFile).%New() set FileObj.FileName = %request.MimeData("$V_File",1).FileName set FileObj.FileSize = %request.MimeData("$V_File",1).Size set FileObj.FileData = ##class(%Stream.GlobalBinary).%New() set stream = %request.GetMimeData("$V_File",1) Set status = FileObj.FileData.CopyFrom(stream) set status = FileObj.%Save() if $$$ISOK(status) { set ^CacheTempPav($zh,"rc")="OK" } else { do $system.Status.DecomposeStatus(status, .errors) merge ^CacheTempPav($zh,"rc")=errors } set status = FileObj.%Close() } Quit $$$OK } } Подскажите, как при нажатии Submit закрыть окно добавления файла вызванное через zenPage.launchPopupWindow и обновить табличку со списком файлов!? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 14:21 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
armin Подскажите, как при нажатии Submit закрыть окно добавления файла вызванное через zenPage.launchPopupWindow window.close() не работает? armin и обновить табличку со списком файлов!? перерисовать эту табличку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 14:35 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
П.С.М.arminПодскажите, как при нажатии Submit закрыть окно добавления файла вызванное через zenPage.launchPopupWindow window.close() не работает? armin и обновить табличку со списком файлов!? перерисовать эту табличку. НЕТ не помагает! Получаеться, что я форму закрываю но сабмит еще не сработал потому таблица и не обновляетья! Как сделать, что бы %OnSubmit срабатывал раньше чем SaveExit() ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2012, 14:54 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
А мне вот интересно, когда нажимается кнопка Submit, как провести необходимые проверки ввода, чтобы ничего не подвисало и можно было провести откат операции? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2012, 16:47 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
feanorcheg , у каждой формы есть onsubmit - используй его для проверок. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 08:45 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
krvsa, разумеется использовал. Но в нём, если использовать конструкцию &js<> то страница вешает намертво одно из ядер операционки. В процессах системы хорошо можно отследить процесс, сжирающий её ресурсы httpd.exe. Короче если проверка не удалась - надо вывести сообщение о неисправности, но как это сделать без javascript не пойму ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 12:03 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
feanorcheg , Можете привести простой тестовый пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 12:23 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status { if $isObject(%request.MimeData("$V_FileStream",1)) { s internalCode="DealId"_$g(LoanID) s res=##class(Application.UpLoadFile).UpLoadFileFromWEB(%request.MimeData("$V_FileStream",1),DocName,internalCode,.FileID) if $$$ISERR(res) { set ErrorText="\nОшибка загрузки файла "_$system.Status.GetErrorText(res) &js<alert("Ошибки при вводе:\n"+'#(ErrorText)#');> quit $$$OK } } else { &js<alert("Ошибка файла");> quit $$$OK } quit $$$OK } ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 12:46 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
это, разумеется, помимо проверок ввода и прочего ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 12:49 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
feanorcheg , По поводу вызова &js<...> из метода %OnSubmit уже было: 12864714 PS: для уведомления об ошибке попробуйте метод pSubmit.%SetError() . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 13:11 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
feanorchegесли использовать конструкцию &js<> то страница вешает намертво одно из ядер операционки Я так вообще такое не использую... Поскольку считаю, что клиентская часть должна работать на клиенте, нефиг её на сервер тянуть и от туда запускать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 13:19 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
krvsafeanorchegесли использовать конструкцию &js<> то страница вешает намертво одно из ядер операционки Я так вообще такое не использую... Поскольку считаю, что клиентская часть должна работать на клиенте, нефиг её на сервер тянуть и от туда запускать. Согласен. Мухи отдельно, котлеты отдельно Я бы не стал обходиться без js: js инициирует загрузку, вызвав серверный метод, получает результат, при необходимости отображает. Не должен метод класса заботиться об отображении ошибки. Не царское это дело ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 08:42 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Кстати а у меня еще такая проблема: когда я выхожу в следствии ошибки из %onsubmit у меня форма как будто обновляется... Как от этого избавиться? Например полей сотня, не заново же их перевводить ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 15:15 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
feanorchegКстати а у меня еще такая проблема: когда я выхожу в следствии ошибки из %onsubmit у меня форма как будто обновляется... Как от этого избавиться? Например полей сотня, не заново же их перевводить Думаю, что "не как-будто". Она и должна обновляться. Это же все-таки submit. А он вызывается для отправки формы на сервер. Данные можно переввести в поля формы из %request'a. Хотя м.б. в ZEN'e это делается более изящно ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 17:14 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Впрочем, до субмита дело может и не дойти, в случае, если возникла непредвиденная ошибка, из за которой вы проскочете мимо всех Код: sql 1.
В этом случае вы, вероятнее всего, попадете на страницу ошибки ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 17:34 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Друзья, использовал весь механизм, описанный в примерах, но файлы грузятся ну оооочень медленно. Из-за этого страдает вообще всё приложение. Я тут подумал, может вы знаете, как напрямую передавать файлы на сервер, а не через gateway? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 14:19 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
feanorcheg , FTP ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 14:22 |
|
Загрузка файла на сервер используя ZEN
|
|||
---|---|---|---|
#18+
Сделал апплодер, загружающий на сервер файлы до 300 КБ примерно за 40 сек... Однако файлы большего размера он просто отказывается грузить большие файлы чем 400 КБ. Где-то 2 минуты идут попытки загрузить этот файл на сервер, после чего окно закрывается, якобы файл загрузился, но на деле это не так. Дело не в тайм-ауте, сервер расположен на IIS. Уже не знаю что и делать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2013, 11:45 |
|
|
start [/forum/topic.php?fid=39&msg=38054547&tid=1557259]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 503ms |
0 / 0 |