Folder upload
От: Valid777  
Дата: 16.08.06 08:57
Оценка:
Приветствую!
Собственно основной вопрос в теме. Как???
Требуется с клиента сделать 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/

— — — — —
the truth is out there


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Folder upload
От: Valid777  
Дата: 16.08.06 14:28
Оценка:
Здравствуйте, Dima_XY3, Вы писали:

D_X>вы совершенно правы!


D_X>могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/


Большое спасибо за ссылку, очень интересно. Только ведь они продают без исходников
Re: Folder upload
От: Mike Chaliy Украина http://chaliy.name
Дата: 16.08.06 16:07
Оценка:
Здравствуйте, Dima_XY3, Вы писали:

D_X>вы совершенно правы!


D_X>могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/


D_X>
данное сообщение получено с www.gotdotnet.ru

D_X>ссылка на оригинальное сообщение


А я могу посоветовать вообще отказаться от такой идеи. Надеяться на то что у активХ всегда будет доступ к диску помойму недальновидно. Хотя если пользователи автора, доверяют автору.. .
А тут я живу и пишу...
Re: Folder upload
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.08.06 06:34
Оценка:
Здравствуйте, 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
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Folder upload
От: Valid777  
Дата: 17.08.06 08:38
Оценка:
Здравствуйте, Mike Chaliy, Вы писали:

MC>Здравствуйте, Dima_XY3, Вы писали:


D_X>>вы совершенно правы!


D_X>>могу посоветовать использовать компоненты от 3их разработчиков, например от http://persits.com/


D_X>>
данное сообщение получено с www.gotdotnet.ru

D_X>>ссылка на оригинальное сообщение


MC>А я могу посоветовать вообще отказаться от такой идеи. Надеяться на то что у активХ всегда будет доступ к диску помойму недальновидно. Хотя если пользователи автора, доверяют автору.. .


К сожалению, отказаться нельзя Предполагается, что пользователи безоговорочно доверяют автору и дадут разрешение на доступ к диску. НО! Доверяю ли я авторам этого ActiveX? Исходники они не дают Поэтому и хотелось бы увидеть как это пишется.
Ну не верю! Неужели никто, никогда не сталкивался с подобной проблемой и не писал ActiveX для этой цели? Или это настолько сложно? Продают их, надо сказать, недешево.
Re[2]: Folder upload
От: Valid777  
Дата: 17.08.06 08:40
Оценка:
Здравствуйте, 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");

var req = new ActiveXObject("msxml2.serverxmlhttp.6.0");
req.open("POST", "http://microsoft.com", false);
req.send(stream);
alert("sent " + stream.Position + " bytes");
}
</script>
</head>
<body>
<input type="button" value="test" onclick="doit()" />
</body>
</html>

Домен должен быть в зоне Надежные узлы.
6.0 может быть 3.0, 4.0, 5.0 в зависимости от версии ОС/SP.

Т.е. не надо писать дополнительные ActiveX — все уже написано и установлено.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Folder upload
От: Valid777  
Дата: 17.08.06 09:27
Оценка:
Здравствуйте, 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.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Folder upload
От: Valid777  
Дата: 17.08.06 20:34
Оценка:
Здравствуйте, mclabman, Вы писали:

M>Правильно догадался.

M>Проблема возникнет, когда потребуется предложить пользователю выбрать папку. Ищи BrowseForFolder.

В ябочко пока все это дело изучал, еще не прочел последнее сообщение и именно в эту проблему и уперся
Еще раз спасибо за новую наводку
Re[4]: Folder upload
От: Valid777  
Дата: 18.08.06 10:41
Оценка:
Здравствуйте, mclabman, Вы писали:

M>Правильно догадался.

M>Проблема возникнет, когда потребуется предложить пользователю выбрать папку. Ищи BrowseForFolder.

Не все так гладко При попытке использовать BrowseForFolder — возникает ошибка permission denied, помещение в trust sites не помогает. Можно использовать только как hta-файл, НО тогда опять проблема как из hta передать в aspx структуру папок с файлами (возможно, достаточно большую)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.