Получить файл из любой библиотеки в веб-дереве
Вопрос
Можно ли использовать некоторые встроенные в SharePoint API для открытия файла, независимо от того, в каком севере и библиотеке это входит?
Пример:
Учитывая файл: /subsitea/publiverifyImages/myimage.jpg Я хочу открыть его и получить элемент списка, но используя это неудачу:
var url = "/subsiteA/PublishingImages/myimage.jpg";
var file = SPContext.Current.Site.RootWeb.GetFile(url);
SPListItem item = file.GetListItem(); //Fails here with item not in library error
.
Естественно, он не будет работать, так как файл не находится в корневом интернет-сети, но есть ли общий способ найти файл, независимо от того, какой веб и библиотеку и извлеките объект SPLISTITEM, связанный с файлом?
Решение
Очень похоже на выше, объект SPSite на самом деле помнит URL-адрес, который он был открыт с помощью - так что вам не нужно давать веб-имя.Вы должны быть в состоянии использовать что-то вроде:
string url= "Full URL to File";
using (SPSite site = new SPSite(url)){
using (SPWeb web = site.OpenWeb())
{
SPFile file = web.GetFile(url);
SPListItem item = file.ListItemAllFields;
}
}
. Другие советы
Я не думаю, что можно получить файл таким образом.Я также действительно хотел знать, если это возможно.
Другой способ, вы должны кодировать как:
Использование (SPSite Site= новый SPSITE («YourSiteurl»)) {
using (SPWeb web = site.OpenWeb("subsiteA"))
{
SPFile file = web.GetFile("/subsiteA/PublishingImages/myimage.jpg");
SPListItem item = file.ListItemAllFields;
}
.
}