Получите URL-адрес веб-приложений Office для документа в 2010 и 2013 годах
-
10-12-2019 - |
Вопрос
При просмотре библиотеки документов, если включены веб-приложения Office, URL для каждого офисного документа отправляется в соответствующий веб-просмотрщик, а не фактическую ссылку на документ.Например:
http://server/_layouts/WordViewer.aspx?id=/Shared%20Documents/Document.docx&Source=http%3A%2F%2Fserver%2FShared%2520Documents%2FForms%2FAllItems%2Easpx&DefaultItemOpen=1&DefaultItemOpen=1
.
в C # Если я получаю URL-адрес документа из SPLISTITEM.FILE, он дает мне прямой URL в документ, а не URL-адрес Office Web Apps.
Как я могу получить версию URL-адреса Web Apps Office от Code?
Спасибо!
Решение
Я нашел лучшее программное решение: функция spotivy.maptoserverfileredirect.
В файлах C: \ Program \ Common Files \ Microsoft Shared \ Web Server Extensions \ 14 \ Template \ XML - это куча файлов XML Serverfiles, которые рассказывают SharePoint, как перенаправить определенные типы файлов и т. Д. Офисные веб-приложенияИспользует это для перенаправления ссылок на файлы Office на страницы Office Web Apps.
Итак, я могу использовать следующее, чтобы получить URL-адрес Web Apps Office (или любой другой специально обрабатываемый URL-адрес Redirect):
//file is a SPFile object, GetAbsoluteUrl is an extension method we use to get the full URL for an SPListItem
var url = SPUtility.MapToServerFileRedirect(web, file.Item.GetAbsoluteUrl(), file.ProgID);
.
Редактировать
Вместо этого необходимо использовать следующий метод:
. SPUtility.GetServerFileRedirectForLinking
Другие советы
Можем ли мы сделать это для навесных элементов списка SharePoint?
Если возможно, пожалуйста, предложите мне нужный код.Еще одна вещь, пожалуйста, определите метод file.item.getaboluteurl (), потому что он не работает для вложений.
SPFile file = item.ParentList.ParentWeb.GetFile(item.Attachments.UrlPrefix + item.Attachments[i].ToString());
var url = SPUtility.MapToServerFileRedirect(objWeb, file.Item.Web.Url + "/" + file.Url, file.ProgID);
.
Я получаю исключение.я
Спасибо заранее. Ожидание вашего ответа.