Получить путь к файлу

nedion

Новичок
Получить путь к файлу

Вобщем, есть сайт, который работает только в локальной сети.
Нужно чтобы юзер мог загружать ссылки на файлы через диалоговое окно.
Сами фалы очень тяжелые (до 10 гб) и разбросаны по всей сетке, поэтуму реализовать храниние файлов в одном месте не возможно.
Единственный выход - это хранить в базе ссылки на файлы.

Собственно вопрос как можно реализовать эту штуковину ?
Опять таки повторюсь, мне нужно передать путь к файлу а не сам файл и мне не надо затем читать или обрабатовать его.
 

nedion

Новичок
dimagolov, сейчас так и работает.
Вопрос именно в том, как это реализовать с использованием диалога "Выбора файлов".
 

prolis

Новичок
на чтение значение файлового инпута наверно открыто - взять оттуда путь и передать его другой формой без аплоада
 

nedion

Новичок
prolis
Это я уже пробовал, вне формы создается input file и на обработчик onclick в поле hide формы записывается значение input file,но к сожалению значение инпута возвращает имя файла вместо полного пути.

Может есть какие нибудь не документируемые возможности DOM, позволяющие вытащить полный путь к файлу.
 

С.

Продвинутый новичок
Полный путь только в IE. В остальных это закрыто из соображений безопасности.
 

nedion

Новичок
Вопрос решен.
Опишу вкратце, если кому интересно.
Полный путь к файлу передается через get.
В контекстное меню explorera добавляем пункт, при клике по которому открывается адресс сайта "http://localhost/getfile?%1", где %1 - путь к файлу.

Теперь возник следующий вопрос (правда скорее по html чем по php) как правильно создать ссылку на локальный ресурс (файл или папку).
 

nedion

Новичок
dprolis
В ie6 не работает если страница находится на удаленном хосте.
 

dimagolov

Новичок
nedion, не будет это работать надежно, так как затрагивает вопросы безопасности и ведет себя по-разному для разных версий браузеров, авторы все время ужесточают ограничения. в ИЕ6 и 7 можно было посмотреть полный путь к выбранному файлу, а в 8 уже хрен вам.
 

nedion

Новичок
dimagolov, cогласен. Но не смотря на ряд ограничений удалось достичь желаемого результата.
Итак что получилось.
Обязательные требования:
1. ОС Windows c ie6 или выше
2. Можно хранить ссылки на файлы расположеные только на сетевых дисках(может и есть способ обойти это ограничение но я его так и не нашел)
Для того чтобы передать путь к файлу используем контестное меню. Для этого в блокноте создайте новый документ.
Копируем след. строки:
[HKEY_CLASSES_ROOT\*\shell\SendToDB]
@="Отправить файл в БД"
"command"="@=\"notepad.exe \"%1\"\""

[HKEY_CLASSES_ROOT\*\shell\SendToDB\command]
@="\"C:\\WINDOWS\\explorer.exe\" \"http:\\\\192.168.1.100\\loadfile.php?path=%1\""

Сохраняем под именем context.reg. После запуска файла появится новый пункт меню “Отправить в БД”. Выбрав его откроется сайт и через get будет передан путь к файлу.
Сам путь сохраняем в БД.
Теперь все что осталось вывести путь к фалам в виде ссылок:
<a href="file://///Server\Folder\test.xls">test.xls</a>
 

dimagolov

Новичок
решение хорошее, но находящееся за рамками веб-программирования :)

-~{}~ 30.11.09 09:55:

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

п.с. цена на диски упала очень сильно, сейчас сделать массив в несколько ТБ стало совсем не сложно.
 

HEm

Сетевой бобер
несколькогигабайтные файлы наводят на мысль что это попытка расшарить киношки в локальной сети
может проще сделать торрент -сервер ?
 

nedion

Новичок
HEm, насчет киношек почти угадал - это отцифрованные кассеты, ну и как следствие вариант с торрент трекером отпадает.

dimagolov, если сможешь предложить более гибкое и красивое решение буду весьма признателен.
 

nedion

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

dimagolov

Новичок
я бы все же думал о централизованном хранилище, может на распределенной ФС, если объемы велики. тогда хоть о каком-то резервировании можно будет думать. потому что с таким зоопарком замахаешься с одной стороны отслеживать актуальность данных, а с другой стороны защищать их от случайных повреждений.

-~{}~ 30.11.09 16:51:

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