SPFile Class

Represents a file in a SharePoint Web site that can be a Web Part Page, an item in a document library, or a file in a folder.

Inheritance Hierarchy

System.Object
  Microsoft.SharePoint.SPFile

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
Public Class SPFile

Dim instance As SPFile
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
public class SPFile

Remarks

Use the GetFile or GetFileAsString method of the SPWeb class to return a single file object. Otherwise, use the Files property of either the SPWeb or SPFolder class to return an SPFileCollection object that represents the collection of files for a site or folder. Use an indexer to return a single file from the collection. For example, if the collection is assigned to a variable named collFiles, use collFiles[index] in C#, or collFiles(index) in Visual Basic, where index is the index number of the file in the collection, the file name including extension, or a Web site relative, site collection relative, or absolute URL.

Examples

This example adds a file from the document library of one site to the Shared Documents document library of another site and its subsites.

For an example that shows how to upload a local file to a folder on a SharePoint site programmatically, see How to: Upload a File to a SharePoint Site from a Local Folder.

Dim siteCollection As SPSite = SPContext.Current.Site
Dim srcSite As SPWeb = siteCollection.AllWebs("Source_Site_Name")
Dim destSites As SPWebCollection = 
    siteCollection.AllWebs("Destination_Site_Name").Webs

Dim srcFile As SPFile = 
    srcSite.GetFile("Source_Folder_Name/Source_File")
Dim fileName As String = srcFile.Name
Dim binFile As Byte() = srcFile.OpenBinary()

Dim destSite As SPWeb

For Each destSite In  destSites

    If destSite.GetFolder("Shared Documents").Exists Then

        Dim destFolder As SPFolder = 
            destSite.GetFolder("Shared Documents")

        destFolder.Files.Add(fileName, binFile, True)

    End If

Next destSite
SPSite oSiteCollection = SPContext.Current.Site;
SPWeb oWebsiteSrc = oSiteCollection.AllWebs["Source_Site_Name"];
SPWebCollection collWebsites = 
    oSiteCollection.AllWebs["Destination_Site_Name"].Webs;

SPFile oFile = oWebsiteSrc.GetFile("Source_Folder_Name/Source_File");
string strFilename = oFile.Name;
byte[] binFile = oFile.OpenBinary();

foreach (SPWeb oWebsite in collWebsites)
{
    if (oWebsite.GetFolder("Shared Documents").Exists)
    {
        SPFolder oFolder = oWebsite.GetFolder("Shared Documents");
        oFolder.Files.Add(strFilename, binFile, true);
    }
    oWebsite.Dispose(); 
}
oWebsiteSrc.Dispose();

Note

Certain objects implement the IDisposable interface, and you must avoid retaining these objects in memory after they are no longer needed. For information about good coding practices, see Best Practices: Using Disposable Windows SharePoint Services Objects.

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

SPFile Members

Microsoft.SharePoint Namespace