1 (изменено: stir, 2011-02-08 09:28:24)

Тема: JavaScript: ссылка на диск С (непонятки)

Наверное я тупею, но ! есть непонятки с ссылкой.

Загружаю страницу "сайта" с локального сервера, где есть ссылка на диск С типа -

<p><a href="C:\Temp-pko\baza101.txt">01&nbsp;база(AWW).</a></p>

, которая не работает, рядом другая (рабочая)

<a href="\\serverpko\arhiv\baza\baza700.txt">Общая база с сервера (700.txt)</a>

Подумал, что туплю, и сделал пробную на JavaScript:

<script type="text/javascript">
var pr='&nbsp;';
var b100="C:\\Temp-pko\\baza100.txt";
var b101="C:\\Temp-pko\\baza101.txt";
....бла...бла..
document.write("01 база(AWW)".link(b101)+pr+ "02 база()".link(b102)+pr+ "03 база(ASW)".link(b103)+pr);
</script>

а результат прежний, ссылка неработает, а при наведении мышью на них в строке появляется

file:///C:/Temp-pko/baza101.txt

а для ссылки на файл сервера две косые, как и положено. Почему? Это происходит только если зайти на сайт, если локально - все работает...файлы открываются. Зачем то появились лишние косые...
Конечно я могу этого избежать, сделав прямую загрузку с сервера(минуя локализацию временных файлов), но я не узнаю причину тогда, подскажите, плиз...

Любители построили Ковчег, а профессионалы - Титаник.

2

Re: JavaScript: ссылка на диск С (непонятки)

Дык локальный сервер не должен видеть диски. Он видит корневую директорию, которая должна быть прописана в настройках.

Кажется так.

Нас невозможно сбить с пути, нам пофигу куда идти.

3

Re: JavaScript: ссылка на диск С (непонятки)

я догадывался, что обойти такое не удастся, и дать доступ на локальные файлы в виде ссылок неполучится, .
хотел разгрузить сервак - копировать на диск С пару текстовиков и давать на на них ссылки..
Ява скрипт копирует, все делает, но ссылок не получаешь правильных.. не критично, обойдем "гору"...ладно.

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

Любители построили Ковчег, а профессионалы - Титаник.

4

Re: JavaScript: ссылка на диск С (непонятки)

Может помогут символьные ссылки?
Поэкспериментируйте.

Нас невозможно сбить с пути, нам пофигу куда идти.

5

Re: JavaScript: ссылка на диск С (непонятки)

Не надо путать локальные пути к объектам ФС с доступом к этих же объектам по протоколам передачи данных (HTTP, FTP).
Например, есть хост с установленным HTTP-сервером. Пусть это будет Apache, который работает из каталога C:\HTTP. Он настроен и обеспечивает доступ к адресам вида http://имя_домена/путь/к/файлу. Но локально эти файлы лежат, например в каталогах C:\Web\имя_домена\www. То есть это рабочий каталог для определенного сайта "имя_домена". То есть сам файл лежит локально в каталоге путь\к\файлу относительно рабочего. Страница на клиенте отображают ссылки относительно доменного имени http://имя_домена, то есть - /путь/к/файлу. И если Ваш javascript формирует некую ссылку динамически, то и делать это должен аналогично. Как соотносятся реальные пути на локальной машине с путями доступа по протоколам - должны знать только службы, обеспечивающие этот доступ.

Мда... Залпом написал много слов. Удалять жалко. Вот кратко.
JS ничего не знает о C:\Web\имя_домена\www\путь\к\файлу.
Он знает только, что обратиться к файлу можно по схеме http://имя_домена/путь/к/файлу

( 2 * b ) || ! ( 2 * b )

6

Re: JavaScript: ссылка на диск С (непонятки)

Я про то и твержу. Но как вы думаете, Rumata, Помогут в данном случае символьные ссылки?

Создать папку в корне сервера "disk_C", сделать на нее символьную ссылку на диск с, обращаться например так:
http://имя_домена/disk_C/xxx/xxx

Нас невозможно сбить с пути, нам пофигу куда идти.

7

Re: JavaScript: ссылка на диск С (непонятки)

Нет. если только данный веб-сервер не умеет обрабатывать файлы типа .LNK и обращаться к реальному файлу, описанному внутри этого файла-ссылки.

( 2 * b ) || ! ( 2 * b )

8 (изменено: DnsIs, 2011-02-09 14:47:53)

Re: JavaScript: ссылка на диск С (непонятки)

Я говорю не о ярлыках.
При всем уважении, я думаю, что вы немного не в курсе что такое символьные ссылки

Нас невозможно сбить с пути, нам пофигу куда идти.

9

Re: JavaScript: ссылка на диск С (непонятки)

А-а-а. Вы про них. Я забыл. Я даже сам аботаю с ними в ФАРе. Опять вопрос упирается в веб-сервер. Он умеет работать с символическими ссылками? Если это простенький, которому по барабану - возможно "съест" сим.линк. А если это Apache... Так у него есть соответствующие параметры. Про IIS не могу сказать - не работал.

( 2 * b ) || ! ( 2 * b )

10

Re: JavaScript: ссылка на диск С (непонятки)

Я с серверами то не работал, поэтому когда упоминал про них в первый раз, то так и написал "...Поэкспериментируйте".
Что то мне подсказывает, что они работаю на уровне операционной системы, и веб-сервер может вообще не понять что к чему, но не буду утверждать. По крайней мере у автора поста есть поле для экспериментов.

Нас невозможно сбить с пути, нам пофигу куда идти.

11

Re: JavaScript: ссылка на диск С (непонятки)

Дабы не быть голословным я проверил собственное утверждение (все таки давно не работаю с серверами, мог и подзабыть). Если в Apache запрещены переходы по сим.линкам (параметр Options -FollowSymLinks), то он выдает соответствующую ошибку и переход не осуществляет - работает везде (win/unix).

( 2 * b ) || ! ( 2 * b )

12 (изменено: stir, 2011-02-10 14:39:14)

Re: JavaScript: ссылка на диск С (непонятки)

IIS. Нет фокус не возможен по своему принципу.. Пользователь загружает оболочку с сервера..скрипт если и смог бы обратиться к диску с, то на самом сервере, а на клиентский ПК ему путь неведом. В моем случае -  IIS, там даже спец папки расшарить под учетку админа на диске С не всегда можно..
Пока заморачиваться не стал, будет время посвободнее - поищу решения, альтернативы..
Пока есть мысли использовать еще кое-что .. типа осуществить передачу файла на расшаренную папку сервера, но через ЯваСкрипт это непрокатит наверное, а в сети есть пример использования форм хтмл+пхп...без представления кода пхп.

Вопрос в продолжение темы: можно ли сделать форму на странице для передачи в локальную сеть (на фтп-сервер) небольших файлов из тойже программы-оболочки, которая построена на хтмл (на странице присутствет код Яваскрипта)?

<FORM ENCTYPE="multipart/form-data" ACTION="http://my.ru/php/upload.php" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000">
<!-- макс. размер -->
Имя файла: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Отправить">
(нажмите кнопку <b>ОБЗОР</b>, затем <b>ОТПРАВИТЬ</b>)
</FORM>

http://nrd.pnpi.spb.ru/UseSoft/Journals … pload.html
- источник.

Меня все равно интересует способ загрузки файла с диска С Клиента через ХТМ на расшаренный и запароленный ресурс (не сервер), без применения смд (батников), хотя с ними шустрее даже.


Может даже так, еще не успел проверить догадки:

<FORM ENCTYPE="multipart/form-data" ACTION="copysmeta.js" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000">
<!-- макс. размер -->
Имя файла: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Отправить"><br>
(нажмите кнопку <b>ОБЗОР</b>, затем <b>ОТПРАВИТЬ</b>)
</FORM>


<script type="text/javascript">

function copysmeta() {

// проверка доступности сервера
var fso8 = new ActiveXObject("Scripting.FileSystemObject");
var b1 = fso8.FolderExists("\\\\serverpko\\arhiv\\smeta"); // true, если данная папка существует
if (b1==true) {
    var fso7 = new ActiveXObject("Scripting.FileSystemObject");
    var f7 = fso7.GetFolder("\\\\serverpko\\arhiv\\smeta");
    f7.Copy(userfile);
    alert("Копирование завершено");
    }
    else alert("Папка или сервер недоступны. Копирование невозможно.");
}
</script>
Любители построили Ковчег, а профессионалы - Титаник.