Редактирование документов MS Office из веб-приложения: пользовательская реализация WebDaV или ...? - PullRequest
8 голосов
/ 22 июля 2011

Ниже приведены наши настройки и требования:

  • Существует общедоступное веб-приложение, доступное через SSL + обычная аутентификация.Большинство из этих приложений находятся в ASP.Net;пара старых в классическом ASP.Сервер Win 2003 / IIS 6.0
  • Это приложение должно поддерживать онлайн-редактирование (в основном) документов MS Office (2007 и 2010).Сами документы хранятся в базе данных вместе с содержимым приложения.
  • Пользователи должны иметь возможность открывать документ по ссылкам HTML;соответствующее внешнее приложение Office (скажем, MS Word) должно открывать документ в режиме редактирования (с эксклюзивной блокировкой), и когда пользователь нажимает кнопку «Сохранить», документ должен быть отправлен обратно в приложение.
  • Желательно, чтобы никаких внешних плагинов не было.Элементы управления / ActiveX должны быть развернуты на стороне клиента.

Является ли пользовательская реализация WebDAV наилучшим возможным подходом?Обратите внимание, что нам могут не понадобиться все функции WebDAV для поддержки вышеуказанных требований.Известны ли вам какие-либо альтернативы?

Если вы хотите использовать собственную реализацию WebDAV, не могли бы вы порекомендовать некоторые хорошие ресурсы (коммерческие / открытые плагины IIS, примеры в .Net, документы и т. Д.), Кромеhttp://www.webdav.org/?Кстати, я не предпочитаю устанавливать громоздкие CMS, такие как Sharepoint, для поддержки такого маленького требования!

Я нашел ветку на SO о пользовательской реализации WebDav: Каков ваш опыт внедрения / использования WebDAV? Это звучит так обескураживающе :( (Доступно только в корне IIS, требуется проверка подлинности Windows и т. Д.)

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 27 июля 2011

Недавно я разработал простой сервер Webdav, используя в качестве основы Apache Tomcat WebdavServlet. Я только что получил исходный код из SVN (см. Ниже) и изменил его в соответствии со своими потребностями. Там вы можете добавить код для различных методов:

doGet
doLock
doPut
doUnlock
etc...  

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

Что касается открытия файлов Office на клиенте, вам может потребоваться использовать библиотеку, которая поставляется вместе с установками Office (по крайней мере, начиная с Office XP). Обратите внимание, что компонент называется SharePoint бла-бла, но он нигде не требует установки SharePoint. У меня есть фрагмент js, который использует библиотеку для примера, очевидно, вы бы изменили, чтобы удовлетворить ваши потребности. Я понимаю, что вы сказали, что нет ActiveX, но без него я не уверен на 100%, как вы открываете ссылки. Вы можете попробовать другие способы.

function webedit(id) {
        if (window.ActiveXObject) {
            var ed; 
            try {
                //Office 2003
                ed = new ActiveXObject('SharePoint.OpenDocuments.2');
            } catch (err1) {
                try {
                    //Office 2000/XP
                    ed = new ActiveXObject('SharePoint.OpenDocuments.1');
                } catch (err2) {                
                    try {
                        //Office 2007
                        ed = new ActiveXObject('SharePoint.OpenDocuments.3');
                    } catch (err3) {                
                        window.alert('Unable to create an ActiveX object to open the document. This is most likely because of the security settings for your browser.');
                        return false;
                    }
                }
            }
            if (ed) {
                ed.EditDocument('<%=webdavPath%>/webdav/'+id);
                return false;
            } else {
                window.alert('Cannot instantiate the required ActiveX control to open the document. This is most likely because you do not have Office installed or you have an older version of Office.');
                return false;
            }
        } else {
            window.alert('Internet Explorer is required to use this feature.');
        }
        return false;    
    }

Я также понимаю, что ваш сервер - IIS, а не на основе Apache, но вы всегда можете запустить установку Tomcat с IIS (это то, что мы делаем) и использовать фильтр JK ISAPI поверх AJP. Во всяком случае, это один из способов сделать что-то и не требует от вас ничего покупать.

Источник SVN: http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/WebdavServlet.java

2 голосов
/ 06 мая 2016

Когда Office открывает файл с URL-адреса, он проверяет, поддерживается ли WebDav для этого URL-адреса. Если это так, и WebDav разрешает запись по этому URL-адресу, то Office разрешит пользователю редактировать файл.

Получение Office для открытия файла, когда пользователь щелкает ссылку в браузере, кажется, лучше всего работает с таким URL-адресом:

ms-word:ofe|u|https://someOfficeFile.docx

URL-адреса в этом стиле не работают, если Office отсутствует на компьютере пользователя.

Интеграция с программным обеспечением, установленным на аппаратном обеспечении пользователя, конечно сложна, потому что разработчик не может контролировать аппаратное обеспечение пользователя.

Было бы лучше, если бы редактирование документов Office можно было полностью выполнить в браузере. Office365 делает это. Интеграция приложения Line-Of-Business с Office365 осуществляется по протоколу WOPI.

Office интегрируется в DropBox и тому подобное через этот протокол. Однако, похоже, что Microsoft еще не готова разрешить интеграцию большого количества LOB-приложений с Office365.

Возможно, Microsoft когда-нибудь опубликует SDK для этой интеграции, не создавая WOPI с нуля.

1 голос
/ 26 июля 2011

Что не так с WebDAV? Существует несколько сторонних серверных компонентов WebDAV, которые вы можете подключить к своему серверному приложению ( www.webdavsystem.com , наш WebDAVBlackbox ).

В качестве альтернативы вы можете создать виртуальную файловую систему на клиенте, которая будет взаимодействовать с сервером по другому протоколу (простой HTTP, если вам проще реализовать такую ​​обработку, или FTP или SFTP).

...