Приветствую!
Собственно основной вопрос в теме. Как???
Требуется с клиента сделать upload папки с содержимым на сервер в одну папку без сохранения структуры папок. Причем надо знать исходную структуру папок, которая затем будет храниться на SQL-сервере
Разумеется, сначала поискал и здесь и на гугле. Результат неутешительный. Вот что янарыл.
Поправте меня, если я не прав:
1. Это сделать стандартными средствами НЕВОЗМОЖНО!
2. Есть только 2 варианта:
a) использовать ActiveX или Java applet на клиенте, с их помощью можно получить доступ к файловой системе клиента и сделать upload, соответственно требуется разрешение на установку на клиенте
b) сжать папку с содержимым в один файл и разжать на сервере, НО как получить доступ к файловой системе клиента, чтобы сохранить структуру папок на SQL-сервере? Все равно потребуется ActiveX?
3. Есть ли еще способ? Может с помощью web services, не представляю как. Или своих web server control? Хотя сомневаюсь.
Если все так, помогите, не дайте пропасть Никогда не писал ActiveX (на чем их хоть пишут в VS.Net 2003. только на С++?). Может есть пример, бесплатные коды?
Заранее спасибо всем!
Folder upload
От:
Аноним
Дата:
16.08.06 13:51
Оценка:
вы совершенно правы!
могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/
Здравствуйте, Dima_XY3, Вы писали:
D_X>вы совершенно правы!
D_X>могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/
Большое спасибо за ссылку, очень интересно. Только ведь они продают без исходников
Здравствуйте, Dima_XY3, Вы писали:
D_X>вы совершенно правы!
D_X>могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/
D_X>данное сообщение получено с www.gotdotnet.ru D_X>ссылка на оригинальное сообщение
А я могу посоветовать вообще отказаться от такой идеи. Надеяться на то что у активХ всегда будет доступ к диску помойму недальновидно. Хотя если пользователи автора, доверяют автору.. .
Здравствуйте, Valid777, Вы писали:
V>1. Это сделать стандартными средствами НЕВОЗМОЖНО!
Если под "стандартными средствами" имеется в виду "голый браузер" то да — невозможно V>2. Есть только 2 варианта: V> a) использовать ActiveX или Java applet на клиенте, с их помощью можно получить доступ к файловой системе клиента и сделать upload, соответственно требуется разрешение на установку на клиенте
Ага и разрешение доступаться к файловой системе. Резко уменьшает шансы на успех. V> b) сжать папку с содержимым в один файл и разжать на сервере, НО как получить доступ к файловой системе клиента, чтобы сохранить структуру папок на SQL-сервере? Все равно потребуется ActiveX?
Не надо никакого ActiveX. Проще всего рассчитывай на то, что пользователь сделает стандартное Send to compressed(zipped) folder. Или аналогичным образом создаст зип сторонними утилитами. В .zip есть вся структура. Научись читать zip файлы, и будет тебе щасте.
V>3. Есть ли еще способ? Может с помощью web services, не представляю как. Или своих web server control? Хотя сомневаюсь.
Есть еще несколько способов, работающих под виндой не древнее XP.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Mike Chaliy, Вы писали:
MC>Здравствуйте, Dima_XY3, Вы писали:
D_X>>вы совершенно правы!
D_X>>могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/
D_X>>данное сообщение получено с www.gotdotnet.ru D_X>>ссылка на оригинальное сообщение
MC>А я могу посоветовать вообще отказаться от такой идеи. Надеяться на то что у активХ всегда будет доступ к диску помойму недальновидно. Хотя если пользователи автора, доверяют автору.. .
К сожалению, отказаться нельзя Предполагается, что пользователи безоговорочно доверяют автору и дадут разрешение на доступ к диску. НО! Доверяю ли я авторам этого ActiveX? Исходники они не дают Поэтому и хотелось бы увидеть как это пишется.
Ну не верю! Неужели никто, никогда не сталкивался с подобной проблемой и не писал ActiveX для этой цели? Или это настолько сложно? Продают их, надо сказать, недешево.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Valid777, Вы писали:
V>>1. Это сделать стандартными средствами НЕВОЗМОЖНО! S>Если под "стандартными средствами" имеется в виду "голый браузер" то да — невозможно V>>2. Есть только 2 варианта: V>> a) использовать ActiveX или Java applet на клиенте, с их помощью можно получить доступ к файловой системе клиента и сделать upload, соответственно требуется разрешение на установку на клиенте S>Ага и разрешение доступаться к файловой системе. Резко уменьшает шансы на успех. V>> b) сжать папку с содержимым в один файл и разжать на сервере, НО как получить доступ к файловой системе клиента, чтобы сохранить структуру папок на SQL-сервере? Все равно потребуется ActiveX? S>Не надо никакого ActiveX. Проще всего рассчитывай на то, что пользователь сделает стандартное Send to compressed(zipped) folder. Или аналогичным образом создаст зип сторонними утилитами. В .zip есть вся структура. Научись читать zip файлы, и будет тебе щасте.
V>>3. Есть ли еще способ? Может с помощью web services, не представляю как. Или своих web server control? Хотя сомневаюсь. S>Есть еще несколько способов, работающих под виндой не древнее XP.
Заинтриговали Что за способы?
Re[2]: Folder upload
От:
Аноним
Дата:
17.08.06 09:10
Оценка:
Например, так.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script language="javascript">
function doit()
{
var stream = new ActiveXObject("adodb.stream");
stream.Type = 1;
stream.Open();
stream.LoadFromFile("c:\\temp\\1.txt");
Здравствуйте, mclabman, Вы писали:
M>Например, так.
M><html xmlns="http://www.w3.org/1999/xhtml" > M><head> M> <script language="javascript"> M> function doit() M> { M> var stream = new ActiveXObject("adodb.stream"); M> stream.Type = 1; M> stream.Open(); M> stream.LoadFromFile("c:\\temp\\1.txt");
M> var req = new ActiveXObject("msxml2.serverxmlhttp.6.0"); M> req.open("POST", "http://microsoft.com", false); M> req.send(stream); M> alert("sent " + stream.Position + " bytes"); M> } M> </script> M></head> M><body> M><input type="button" value="test" onclick="doit()" /> M></body> M></html>
M>Домен должен быть в зоне Надежные узлы. M>6.0 может быть 3.0, 4.0, 5.0 в зависимости от версии ОС/SP.
M>Т.е. не надо писать дополнительные ActiveX — все уже написано и установлено.
M>данное сообщение получено с www.gotdotnet.ru M>ссылка на оригинальное сообщение
Спасибо за пример, будем изучать. А как получить доступ к файловой системе (т.е. прочесть структуру папок для upload) Вот так? new ActiveXObject( 'Scripting.FileSystemObject' ) или что-то подобное?
Re[3]: Folder upload
От:
Аноним
Дата:
17.08.06 10:50
Оценка:
Правильно догадался.
Проблема возникнет, когда потребуется предложить пользователю выбрать папку. Ищи BrowseForFolder.
Здравствуйте, mclabman, Вы писали:
M>Правильно догадался. M>Проблема возникнет, когда потребуется предложить пользователю выбрать папку. Ищи BrowseForFolder.
Не все так гладко При попытке использовать BrowseForFolder — возникает ошибка permission denied, помещение в trust sites не помогает. Можно использовать только как hta-файл, НО тогда опять проблема как из hta передать в aspx структуру папок с файлами (возможно, достаточно большую)?