Загрузить файл из SharePoint 2013 с аутентификацией - PullRequest
0 голосов
/ 29 июня 2018

У меня есть инструмент vb.net, который загружает *. Zip файл с сервера SharePoint. До сих пор он работал под SharePoint 2007 .
Под SharePoint 2013 и я больше не могу скачивать файл. В SharePoint 2013 пользователь должен аутентифицироваться через эту маску на стороне аутентификации в браузере.

enter image description here

Это было старое решение, которое работало в SharePoint 2007

Dim WebIntranet As New WebClient
Dim strURL as String = "https://example.com/content/P123456/Documents/File.zip"

WebIntranet.UseDefaultCredentials = True
'Download the File from the Server
 WebIntranet.DownloadFile(strURL,
     "D:\Temp\File.zip ")

Для нового решения это не сработало, и я попробовал несколько вещей:

Первый заход:

Dim client As New WebClient 
Dim _UserAgend As String = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
Dim strURL as String = "https://example.com/content/P123456/Documents/File.zip"

client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgend)

WebIntranet.DownloadFile(strURL,
     "D:\Temp\File.zip ")

Второй заход:

Dim securedPassword As SecureString = New SecureString
Dim _UserAgend As String = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
Dim username As String = "TestUser@Test.com"
Dim password As String = "123456"
client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgend)


For Each c In password.ToCharArray()
    securedPassword.AppendChar(c)
Next
client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgend)
client.Credentials = New NetworkCredential(username, securedPassword) WebIntranet.DownloadFile(strURL,
     "D:\Temp\File.zip ")

Оба согласования не работали, они не загрузили файл с Sharepoint.
Они только загрузили сторону аутентификации и назвали ее «File.zip»

Любая помощь приветствуется


Необработанный запрос от скачивания

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Попробуйте это решение. Не забудьте заменить данные сайта и учетные данные

    Using context As ClientContext = New ClientContext("https://example.com")
        context.Credentials = New NetworkCredential("TestUser@Test.com", "123456")
        Dim file As File = context.Web.GetFileByServerRelativeUrl("/content/P123456/Documents/File.zip")
        Dim filestrem As ClientResult(Of IO.Stream) = file.OpenBinaryStream()
        context.Load(file)
        context.ExecuteQuery()
        Using stream As IO.MemoryStream = New IO.MemoryStream()
            filestrem.Value.CopyTo(stream)
            IO.File.WriteAllBytes("D:\Temp\" + file.Name, stream.ToArray())
        End Using
    End Using
0 голосов
/ 03 июля 2018

Не знаю, работает ли он для вашего метода аутентификации, но я мог бы загрузить такой файл (установите ссылку на Microsoft.SharePoint.Client и Microsoft.SharePoint.Client. Продолжительность ):

Imports System.Security
Imports Microsoft.SharePoint.Client

...
Dim securePwd As SecureString
Dim credentials As SharePointOnlineCredentials
Dim list As List
Dim listItem As ListItem
Dim listItemFile As File
Dim fileRef As String
Dim fileInfo As FileInformation
Dim fileName As String

...
credentials = New SharePointOnlineCredentials(userName, securePwd)

Using context As ClientContext = New ClientContext(BASE_URL)
    context.Credentials = credentials

    list = context.Web.Lists.GetByTitle(LIST_TITLE)
    listItem = list.GetItemById(ITEM_ID)
    listItemFile = listItem.File

    context.Load(list)
    context.Load(listItem, Function(x As ListItem) x.File)
    context.Load(listItemFile, Function(x As File) x.ServerRelativeUrl)
    context.ExecuteQuery()

    fileRef = listItem.File.ServerRelativeUrl
    fileInfo = File.OpenBinaryDirect(context, fileRef)
    fileName = IO.Path.Combine(destinationPath, listItem.File.Name)

    Using stream As IO.FileStream = System.IO.File.Create(fileName)
        fileInfo.Stream.CopyTo(stream)
    End Using
End Using

BASE_URL, LIST_TITLE и ITEM_ID Я получил по URL при просмотре файла для загрузки в браузере.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...