如何获取sharepoint库中文件的绝对URL

我正在使用SharePoint 2010.我在该库中有一个文档库ID和文档ID。我没有web文件库所在的站点。现在我必须获取文档的完整URL在运行时。我怎么能得到它。 我尝试了以下内容。
string filepath = currentList.DefaultViewUrl + "/" + sListItem.Url;
请回答这个问题。     
已邀请:
使用
SPListItem
上的“EncodedAbsUrl”字段。适用于
SPFile
SPListItem item = ...;
string absUrl = (string) item[SPBuiltInFieldId.EncodedAbsUrl];
或者为
SPFile
 SPFile file = ...;
 string absUrl = (string) file.Item[SPBuiltInFieldId.EncodedAbsUrl];
    
内置字段ID肯定是最好的方法,但它会返回编码的Url,这可能是您想要的,也可能不是。 我认为最好的方法是在某个地方为实用程序类添加一个扩展方法:
public static string AbsoluteUrl(this SPFile File, bool Decode = true)
{
    string EncodedUrl = File.Item[SPBuiltInFieldId.EncodedAbsUrl].ToString();
    if (Decode)
        return SPEncode.UrlDecodeAsUrl(EncodedUrl);
    else
        return EncodedUrl;
}
然后打电话如下
Item.File.AbsoluteUrl();
如果你想要一个解码的Url或
Item.File.AbsoluteUrl(false);
如果您希望Url保持编码状态。 请注意,Decode的默认参数值仅在.Net4 +中可用,因此仅在SP2013中可用,但您可以轻松地为SP2010创建过载方法。您还需要引用Microsoft.SharePoint.Utilities命名空间来访问SPEncode类。     
试试这个 ,
          using (SPSite ospSite = new SPSite("http://abcd:24931"))
           {
              using (SPWeb web = ospSite.OpenWeb("/subsite")
               {
               // Get document library collection here and fetch all the document urls
                   SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["docu"]; 

                //where docu is my  document library
                SPListItemCollection items = docLib.Items;

                   foreach (SPListItem item in items)
                    {
                       string url = item.Url;
                    }
               }
          }
希望这会让你前进。     
如果这是文档库,请尝试这个。
item.Web.Url+"/"+item.File.Url
    
public string GetItemURL(SPListItem item)
    {
        string web = item.Web.Url;
        string listID = item.ParentList.ID.ToString();
        string contentType = item.ContentTypeId.ToString();
        string itemID = item.ID.ToString();
        string url = web+"/_layouts/listform.aspx?PageType=4&ListID={"+listID+"}&ID="+itemID+"&ContentTypeID="+contentType;
        return url;
    }
这对我有用。希望我帮忙(列出项目网址)     
对于它的价值,访问
item.Web
属性意味着你实际上是在实例化
SPWeb
对象,这意味着这应该被处理,否则你将导致内存泄漏。 当已经提到更好更快的方法时,这是一个很大的开销。 我会使用提到的
BuiltInFieldId.EncodedAbsUrl
方法,因为这可以让您最方便地访问您想要的内容。     
使用下面的代码获取文件的绝对URL:
SPFile file;    
string url = file.Item[SPBuiltInFieldId.EncodedAbsUrl] as string;
    
答案是 string url = currentweb.url +“/”+ Listitem.url;     

要回复问题请先登录注册