Как открыть внешний файл из HTML

Мне нужен список гиперссылок на базовой html-странице, которые указывают на файлы в нашей корпоративной интрасети.

Когда пользователь щелкает ссылку, я хочу, чтобы файл открывался. Это электронные таблицы Excel, и это интранет-среда, поэтому я могу рассчитывать на то, что у всех установлен Excel.

Я пробовал две вещи:

  1. Очевидная и простая вещь:
<a href="file://server/directory/file.xlsx">Click me!</a>
  1. Параметр vbscript, который я нашел в поиске Google:
<HTML>
<HEAD>
    <SCRIPT LANGUAGE=VBScript>
    Dim objExcel

    Sub Btn1_onclick()
    call OpenWorkbook("\\server\directory\file.xlsx")
    End Sub

    Sub OpenWorkbook(strLocation)

    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = true
    objExcel.Workbooks.Open strLocation
    objExcel.UserControl = true
    End Sub

    </SCRIPT>
    <TITLE>Launch Excel</Title>
</HEAD>
<BODY>
    <INPUT TYPE=BUTTON NAME=Btn1 VALUE="Open Excel File">
</BODY>
</HTML> 

Я знаю, что это очень простой вопрос, но я был бы признателен за любую помощь, которую я могу получить.

Изменить: есть предложения, которые работают как в IE, так и в Firefox?


person JosephStyons    schedule 19.09.2008    source источник
comment
в чем именно проблема?: Кажется, что они оба должны работать (ну, я не очень хорошо знаю VBScript, но предполагается, что этот код правильный...).   -  person Asmor    schedule 19.09.2008


Ответы (8)


Попробуйте отформатировать ссылку следующим образом (выглядит адски, но у меня работает в Firefox 3 под Vista):

<a href="file://///SERVER/directory/file.ext">file.ext</a>
person David Heggie    schedule 19.09.2008
comment
Потрясающий. Я знал, что это должно быть что-то простое. У меня работает в Ffx и IE. Я использую XP, для записи. - person JosephStyons; 19.09.2008
comment
Я думаю, что у вас может быть слишком много косых черт. Вам нужно 2 для протокола file:// и 2 для имени сервера //SERVER/. - person Orion Adrian; 27.01.2009
comment
У меня работает с пятью косыми чертами, а не с четырьмя, которые вы ожидаете. Не спрашивайте меня, почему... - person David Heggie; 29.01.2009
comment
Firefox действительно нуждается в пяти косых чертах. - person Gleb; 18.04.2009
comment
en.wikipedia.org/wiki/File_URI_scheme#Mozilla пятая косая черта отделяет подразумеваемый локальный хост после файла:// с сервера //СЕРВЕР - person Simon D; 31.10.2011
comment
@DavidHeggie: как это можно сделать в cshtml(razor) .net 2010 - person 14578446; 26.01.2012
comment
Почти уверен, что этот небольшой хак больше не работает в Google Chrome, по крайней мере, я не могу заставить его работать в моем приложении :( - person Vidar; 07.03.2013

<a href="file://server/directory/file.xlsx" target="_blank">, если я правильно помню.

person diciu    schedule 19.09.2008
comment
Работает в IE, но не в firefox. Собираюсь попробовать предложение по несоответствию типов. - person JosephStyons; 19.09.2008

Если вашим веб-сервером является IIS, вам необходимо убедиться, что новые типы mime Office 2007 (я вижу суффикс xlsx) добавлены в список типов mime в IIS, иначе он откажется обслуживать неизвестный тип файла.

Вот одна ссылка, чтобы рассказать вам, как:

Настройка IIS 6 для Office 2007

person Ken Ray    schedule 19.09.2008

Вам может понадобиться дополнительный "/"

<a href="file:///server/directory/file.xlsx">Click me!</a>
person Sam Reynolds    schedule 19.09.2008

Если общая папка не открыта для всех, вам нужно будет обслуживать ее в фоновом режиме из файловой системы через веб-сервер.

Вы можете использовать что-то вроде этот "ASP Пример ".Net Serve File For Download" (архивная копия 2) .

person Turnkey    schedule 19.09.2008
comment
В этом случае аутентификация уже выполняется до того, как они попадут на эту веб-страницу. Любой, кто попадет сюда, должен иметь доступ к этим файлам и к каталогу, в котором они хранятся. Я действительно хочу, чтобы это было просто. - person JosephStyons; 19.09.2008

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

person Jan Hančič    schedule 19.09.2008
comment
Я согласен. Так как же реализовать такую ​​простую ссылку в HTML? - person JosephStyons; 19.09.2008

Вам придется полагаться на то, что у каждой машины есть правильные ассоциации файлов. Если вы попытаетесь открыть приложение из JavaScript/VBScript на веб-странице, порожденное приложение либо будет помещено в песочницу (что означает снижение разрешений), либо будет много запросов безопасности.

Мое предложение состоит в том, чтобы посмотреть на сервер SharePoint для этого. Это то, что мы знаем, что они делают, и вы можете редактировать на месте, но возникает вопрос, как им это удается. Я предполагаю, что это прямая интеграция с Office. В любом случае, это не то, для чего Интернет предназначен, потому что я предполагаю, что вы хотите, чтобы они редактировали исходный документ, а не просто создавали свою собственную копию (что было бы поведением по умолчанию file://.

Таким образом, в зависимости от ваших вариантов, может быть возможно создать приложение на стороне клиента, которое будет установлено на всех ваших клиентских машинах, а затем ответит на определенный обработчик файлов, который говорит, что нужно открыть это приложение на файловом сервере. Тогда не имело бы значения, кто это делает, поскольку все браузеры просто передавали бы запрос вам. Вам нужно будет создать свой собственный обработчик, например fileserver://.

person Orion Adrian    schedule 19.09.2008

Ваша первая идея была такой, но я также заметил проблемы с этим с помощью Firefox, попробуйте прямой http:// к файлу - href='http://server/directory/file.xlsx'

person typemismatch    schedule 19.09.2008