Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Как через форму сохранить файл на сервере вот элемент формы <input name="DefFile" type="file" style="margin-left:108px;" size="35"> Вот его описание в классе Property DefFile As %Stream(LOCATION = "C:\Apache\htdocs\csp\pss\defects\files", STORAGE = "FILE") [ Collection = binarystream ]; на кнопке формы стоит OnClick=#call(..sumbitform(....,self.document.add.DefFile.value,....))#; Вот часть метода <script language="cache" method="submitform" arguments="..., DefFile:%Stream,..." returntype=""> New type, sc Set type=##class(P.Defect).%New() ... Set type.DefFile=DefFile ... </script> Проблема в том, что все поля из формы сохраняются, а файл нет. В чём ошибка? Папка по указанному пути есть. И, кстати, если предполагается, что сохраняться должны текстовые файлы и картинки, то бинарный тип подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 00:50 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Ошибка в том, что файл Вы через гиперсобытие не прогоните, ножно использовать submit и <form method=post> Любви. logist (Сергей Шутов) ООО Димас, Хабаровск Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 06:34 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Т.е. убрать событие с кнопки, поменять на submit, добавить метод post. Метод перенесу в класс. В нём что-нибудь изменять нужно? Или в классе? Т.е. этого для сохранения файла достаточно? <input name="DefFile" type="file" style="margin-left:108px;" size="35"> Класс .... Property DefFile As %Stream(LOCATION = "C:\Apache\htdocs\csp\pss\defects\files", STORAGE = "FILE") [ Collection = binarystream ]; ... Метод класса ... Set type.DefFile=DefFile ... И метод будет принимать параметр для файла как DefFile As %Stream Так будет правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 13:40 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Вот, в примерах есть: http://localhost:57772/csp/samples/upload.csp -------- Cache for Windows (x86-32) 2007.1.1 (Build 420.0U_SU) Tue Jul 10 2007 14:04:48 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 18:25 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Что-то мне этот пример совсем не помог, к тому же, он ничего никуда не загружает. А мне нужно чтоб с базой работал, т.е. сохранял значение(имя, например) + загружал в определённую директорию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 23:50 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Вобщем, тестирую теперь в отдельном классе и отдельной форме с одним полем: Класс: Class P.Test Extends %Persistent [ ClassType = persistent ] { Property FileStream As %Stream(LOCATION = "C:\", STORAGE = "FILE") [ Collection = binarystream ]; ClassMethod AddNewFile(FileStream As %Stream) As %Integer { New type,sc Set type=##class(P.Test).%New() Set type.FileStream=FileStream Set sc=type.%Save() do type.%Close() If ($$$ISERR(sc)) &js<alert('Невозможно создать статус работы.');> QUIT 0 QUIT 1 } } А вот форма: <form action="upload.csp" enctype="multipart/form-data" method="post"> Enter a file to upload here: <input name="FileStream" size=30 type=file> <p> <ul><input type="submit" name="add" value="Upload file"></ul> <p> </form> <script language="cache" runat="server"> if %request.Get("add")'="" { do ##class(P.Test).AddNewFile(%request.Get("FileStream")) } </script> Через SQL-менеджер делаю SQL-запросы к этой таблице. Там создаётся новая запись, но постая, только ID. И, конечно, файл в C:\ не загружается. Что опять не так то?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 23:57 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Вот в этом куске у вас на сервере есть %request.MimeData("FileStream",1) -- загружаемый файл, делать с ним можно что угодно --- сохранять в базу или в папку. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext Код: plaintext -------- Cache for Windows (x86-32) 2007.1.1 (Build 420.0U_SU) Tue Jul 10 2007 14:04:48 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2008, 09:48 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Не работает :(. В корень диска C, как я указал в классе, ничего не загружает. А в базу что сохраняет в поле FileStream, я вообще не понимаю )). Пару символов каких-то - ||, e|, t| и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2008, 00:26 |
|
||
|
Загрузка файла на сервер через форму
|
|||
|---|---|---|---|
|
#18+
Вот нашёл пример. Работает :) <SCRIPT arguments="" LANGUAGE="CACHE" RUNAT="SERVER" method="OnPreHTTP" returntype="%Boolean"> if (%request.IsDefinedMimeData("FileStream")) { if (%request.GetMimeData("FileStream").Size>0) { s %session.Data("FileStream")=1 new dir, cont, loaded s loaded=1 s dir="c:\" Set file=##class(%File).%New(dir_"\ИМЯ_ФАЙЛА") d file.Open("WSN") while '(loaded>%request.GetMimeData("FileStream").Size) { s cont=%request.GetMimeData("FileStream").Read(loaded) d file.Write(cont) s loaded=loaded+1 } d file.%Close() kill dir,cont,loaded } } </SCRIPT> <form enctype="multipart/form-data" method="post" id="form1" name=form1 action="upload.csp"> <input type=file name="FileStream" size=30> <input type=submit id=uploadform value='Загрузить удаленно'> </form> Только есть такой вопрос. Вот в этой строке как сделать, чтоб имя файла записывалось то, которое как раз и загружаем? Set file=##class(%File).%New(dir_"\ИМЯ_ФАЙЛА") И ещё, подскажите где и что дописать в коде, чтоб путь к файлу сохранялся в базе в каком нубиль поле, например Property File, чтоб я, исходя из этого, ссылку на него формировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2008, 00:52 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=35106306&tid=1559013]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 360ms |

| 0 / 0 |
