Quantcast
Channel: Microsoft Online: SharePoint Online forum
Viewing all articles
Browse latest Browse all 10096

Office 365 upload a file to a document library powershell

$
0
0
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
            $pass =  ConvertTo-SecureString $credentials.Password -AsPlainText -Force
            $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credentials.UserName,$pass)
            $Context.Credentials = $Creds
            #Retrieve list
            $List = $Context.Web.Lists.GetByTitle($DocLibName)
            $Context.Load($List)
            $Context.ExecuteQuery()
   $filename = $File.Name
                            $Url = $SiteUrl + "/_api/web/lists/getbytitle('$DocLibName')/rootfolder/files/add(url='" + $file.Name + "', overwrite=true)"
                            $FileContent = [System.IO.File]::ReadAllBytes($File.FullName)

                            Invoke-RestSPO -url $Url -method "Post" -Username $credentials.UserName -Password $pass -Body $FileContent -RequestDigest $context.GetContextWebInformation.FormDigestValue

Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"

Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"<#

.Synopsis

    Sends an HTTP or HTTPS request to a SharePoint Online REST-compliant web service.

.DESCRIPTION

    This function sends an HTTP or HTTPS request to a Representational State

    Transfer (REST)-compliant ("RESTful") SharePoint Online web service.

.EXAMPLE

   Invoke-SPORestMethod -Url "https://contoso.sharepoint.com/_api/web"

.EXAMPLE

   Invoke-SPORestMethod -Url "https://contoso.sharepoint.com/_api/contextinfo" -Method "Post"

#>



Function Invoke-RestSPO(){



Param(

[Parameter(Mandatory=$True)]

[String]$Url,



[Parameter(Mandatory=$False)]

[Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get,



[Parameter(Mandatory=$True)]

[String]$UserName,



[Parameter(Mandatory=$False)]

[String]$Password,



[Parameter(Mandatory=$False)]

[String]$Metadata,



[Parameter(Mandatory=$False)]

[System.Byte[]]$Body,



[Parameter(Mandatory=$False)]

[String]$RequestDigest,



[Parameter(Mandatory=$False)]

[String]$ETag,



[Parameter(Mandatory=$False)]

[String]$XHTTPMethod,



[Parameter(Mandatory=$False)]

[System.String]$Accept = "application/json;odata=verbose",



[Parameter(Mandatory=$False)]

[String]$ContentType = "application/json;odata=verbose",



[Parameter(Mandatory=$False)]

[Boolean]$BinaryStringResponseBody = $False



)









   if([string]::IsNullOrEmpty($Password)) {

      $SecurePassword = Read-Host -Prompt "Enter the password" -AsSecureString

   }

   else {

      $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force

   }





   $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)

   $request = [System.Net.WebRequest]::Create($Url)

   $request.Credentials = $credentials

   $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f")

   $request.ContentType = $ContentType

   $request.Accept = $Accept

   $request.Method=$Method



   if($RequestDigest) {

      $request.Headers.Add("X-RequestDigest", $RequestDigest)

   }

   if($ETag) {

      $request.Headers.Add("If-Match", $ETag)

   }

   if($XHTTPMethod) {

      $request.Headers.Add("X-HTTP-Method", $XHTTPMethod)

   }

   if($Metadata -or $Body) {

      if($Metadata) {

         $Body = [byte[]][char[]]$Metadata

      }

      $request.ContentLength = $Body.Length

      $stream = $request.GetRequestStream()

      $stream.Write($Body, 0, $Body.Length)

   }

   else {

      $request.ContentLength = 0

   }



   #Process Response

   $response = $request.GetResponse()

   try {

       if($BinaryStringResponseBody -eq $False) {

           $streamReader = New-Object System.IO.StreamReader $response.GetResponseStream()

           try {

              $data=$streamReader.ReadToEnd()

              $results = $data | ConvertFrom-Json

              $results.d

           }

           finally {

              $streamReader.Dispose()

           }

        }

        else {

           $dataStream = New-Object System.IO.MemoryStream

           try {

           Stream-CopyTo -Source $response.GetResponseStream() -Destination $dataStream

           $dataStream.ToArray()

           }

           finally {

              $dataStream.Dispose()

           }

        }

    }

    finally {

        $response.Dispose()

    }



}





# Get Context Info

Function Get-SPOContextInfo(){



Param(

[Parameter(Mandatory=$True)]

[String]$WebUrl,



[Parameter(Mandatory=$True)]

[String]$UserName,



[Parameter(Mandatory=$False)]

[String]$Password

)





   $Url = $WebUrl + "/_api/contextinfo"

   Invoke-RestSPO $Url Post $UserName $Password

}







Function Stream-CopyTo([System.IO.Stream]$Source, [System.IO.Stream]$Destination)

{

    $buffer = New-Object Byte[] 8192

    $bytesRead = 0

    while (($bytesRead = $Source.Read($buffer, 0, $buffer.Length)) -gt 0)

    {

         $Destination.Write($buffer, 0, $bytesRead)

    }

}

I am trying to upload a file with REST as for some reason it gets timed out after 3 minutes using

$FileStream =New-Object IO.FileStream($File.FullName,[System.IO.FileMode]::Open)
                    $FileCreationInfo =New-ObjectMicrosoft.SharePoint.Client.FileCreationInformation
                    $FileCreationInfo.Overwrite= $true
                    $FileCreationInfo.ContentStream= $FileStream

                        $FileCreationInfo.URL = $File

                    $Upload = $DestinationFolder.Files.Add($FileCreationInfo)
                    $Context.Load($Upload)
                    $Context.ExecuteQuery()

But when I run my script I get the error Array dimensions exceeded supported range. What is wrong with what I am doing? and will rest work for uploading files greater than 2MB? the rest script is the one at the top


Viewing all articles
Browse latest Browse all 10096

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>