5

Адаптация ответов пользователя Vadim на номера Upload file to SharePoint 2010 using PowerShell and the OData API и SharePoint 2010 REST API JQUery Insert, Update, Delete.Замена прикрепленного файла с использованием API OData SharePoint 2010

Попытки загрузить новую версию вложения:

Function Update-Attachments() { 

    [CmdletBinding()] 
    Param(
     [Parameter(Mandatory=$True,Position=1)] 
     [string]$WebUrl, 

     [Parameter(Mandatory=$True,Position=2)] 
     [string]$ListName, 

     [Parameter(Mandatory=$True,Position=3)] 
     [int]$ItemId, 

     # pipeline support 
     [Parameter(Mandatory=$True,Position=4,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
     # associate FileInfo object's FullName property to be bound to parameter 
     [Alias('FullName')] 
     [string[]]$Paths 
    ) 

    BEGIN {} 
    PROCESS { 

     # 
     $endpointUri = New-Object System.Uri("$WebUrl/_vti_bin/listdata.svc/$ListName($ItemId)/Attachments") 

     Foreach ($Path In $Paths) { 
      Write-Verbose "Path: $Path" 

      $fileName = (Split-Path $Path -Leaf) 
      $fileContent = ([IO.File]::ReadAllBytes($Path)) 
      $headers = @{ 
       "X-HTTP-Method" = "MERGE"; 
       "If-Match" = "*" 
      } 

      try { 
       # reset each pass to ensure that prior response isn't reused 
       $response=$null 
       $response = Invoke-WebRequest -Uri $endpointUri -Method POST -UseDefaultCredentials -Body $fileContent -Headers $headers -ContentType "*/*" 
      } 

      # Invoke-WebRequest throws System.Net.WebException 
      catch [System.Net.WebException] { 
       throw $_ 
      } 

      finally { 
       # returns Microsoft.PowerShell.Commands.HtmlWebResponseObject 
       $response 
      } 

     } # Foreach 

    } # PROCESS 
    END {} 

} 

Использования команды бросков (405) Method Not Allowed:

Update-Attachments -WebUrl "http://contoso.intranet.com/" -ListName "Tasks" -ItemId 1 -Paths "C:\Users\user\Documents\SharePointUserGuide.docx" 

Я пробовал вариации на конечной точке:

  • $endpointUri = New-Object System.Uri("$WebUrl/_vti_bin/listdata.svc/$ListName/Attachments/$ItemId/$fileName")
  • $endpointUri = New-Object System.Uri("$WebUrl/_vti_bin/listdata.svc/Attachments(EntitySet='$ListName',ItemId=$ItemId,Name='$fileName')")

и переключение между PUT и MERGE.

Что мне не хватает?

+0

Что происходит, когда вы «вручную» пытаются использовать API с помощью вызова-WebRequest или вызывать-restmethod (так без использования скрипта)? Вызывает ли это ошибка? И API настроен на прием HTTPpost, put, delete и других методов? – bluuf

ответ

1

Можете ли вы проверить, работает ли эта ссылка SharePoint 2013 с API 2010?

url: http://site url/_api/web/lists/getbytitle('list title')/items(item id)/AttachmentFiles('file name')/$value 
method: POST 
body: "Contents of file." 
headers: 
    Authorization: "Bearer " + accessToken 
    "X-HTTP-Method":"PUT" 
    X-RequestDigest: form digest value 
    content-length:length of post body 

https://msdn.microsoft.com/en-us/library/office/dn292553.aspx?f=255&MSPPError=-2147217396

 Смежные вопросы

  • Нет связанных вопросов^_^