Descargar archivo de Sharepoint en blanco y 0KB
Estoy desarrollando una pequeña aplicación que se conecta a un punto de acción para poder descargar algunos archivos de una carpeta de documentos.
El detalle es que cuando descargo el archivo, lo descarga vacío y con 0KB en el tamaño del archivo y cuando intento abrir el archivo, enviar un mensaje que dice que está dañado o dañado.
Este es el código desarrollado.
Imports Microsoft.Office.Interop
Imports System.IO
Imports Microsoft.SharePoint.Client
Imports Microsoft.SharePoint
Imports System.Security
Imports System.Net
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim siteUrl As String = "https://example.sharepoint.com/sites/TRAINING/"
Dim authManager = New OfficeDevPnP.Core.AuthenticationManager()
Dim ctx As ClientContext = authManager.GetWebLoginClientContext(siteUrl)
Dim web As Web = ctx.Web
ctx.Load(web, Function(w) w.Title)
ctx.ExecuteQuery()
Console.WriteLine("You have connected to {0} site, with Multi Factor Authentication enabled!!", web.Title)
DeleteFilesInsideFolder("C:\Users\Public\Documents\Test")
rPath = "https://example.sharepoint.com/:x:/r/sites/TRAINING/Data/Example.xlsx"
destination = "C:\Users\Public\Documents\Test\Example.xlsx"
Try
My.Computer.Network.DownloadFile(rPath, destination)
Catch ex As Exception
MessageBox.Show("An error occurred:" & Environment.NewLine & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Sub DeleteFilesInsideFolder(ByVal target_folder_path As String)
For Each file_path As String In Directory.GetFiles(target_folder_path)
Try
My.Computer.FileSystem.DeleteFile(file_path)
Catch ex As Exception
MessageBox.Show("An error occurred:" & Environment.NewLine & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Next
End Sub
Por favor, ¿podrías ayudarme a saber por qué?
Saludos.
Pregunta hecha hace 3 años, 4 meses, 29 días - Por codesculptor3f6e
2 Respuestas:
-
El problema que estás experimentando probablemente se deba a que estás descargando el archivo de Sharepoint utilizando la clase
My.Computer.Network.DownloadFile
, que no está diseñada para descargar archivos de servicios en la nube como SharePoint.Para descargar archivos de Sharepoint con el Cliente de SharePoint en C
, puedes usar el objeto
ClientContext
yFile.SaveBinaryDirect
para descargar el archivo. Aquí te dejo un ejemplo de cómo modificar tu código para descargar un archivo de Sharepoint correctamente:vb Imports Microsoft.SharePoint.Client Imports System.IO Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim siteUrl As String = "https://example.sharepoint.com/sites/TRAINING/" Dim authManager = New OfficeDevPnP.Core.AuthenticationManager() Dim ctx As ClientContext = authManager.GetWebLoginClientContext(siteUrl) Dim web As Web = ctx.Web ctx.Load(web, Function(w) w.Title) ctx.ExecuteQuery() Console.WriteLine("You have connected to {0} site, with Multi Factor Authentication enabled!!", web.Title) DeleteFilesInsideFolder("C:\Users\Public\Documents\Test") Dim fileUrl As String = "https://example.sharepoint.com/sites/TRAINING/Data/Example.xlsx" Dim destination As String = "C:\Users\Public\Documents\Test\Example.xlsx" Dim fileInformation As FileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, fileUrl) Dim memoryStream As New MemoryStream() fileInformation.Stream.CopyTo(memoryStream) File.WriteAllBytes(destination, memoryStream.ToArray()) End Sub
Con esta modificación, el archivo de Sharepoint debería descargarse adecuadamente y no deberías tener problemas al abrirlo. Asegúrate de ajustar las rutas de los archivos y las URLs de Sharepoint según tus necesidades. Espero que esta solución te sea de ayuda. ¡Saludos!
Respondida el Dec 18, 2020 a las 03:34 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Problema: Los archivos descargados de SharePoint están vacíos y tienen un tamaño de 0 KB.
Causa posible: Autorización incorrecta o problemas de conexión.
Solución:
- Verifica tus credenciales: Asegúrate de que estás utilizando la cuenta correcta de SharePoint con los permisos adecuados para acceder a los archivos.
- Comprueba la conexión: Asegúrate de que tu computadora tenga una conexión a Internet estable y que no esté bloqueada por un firewall o proxy.
- Intenta utilizar diferentes bibliotecas: Considera utilizar bibliotecas alternativas como la biblioteca de SharePoint Online Client (CSOM) o la biblioteca PnP PowerShell para descargar los archivos.
- Verifica la URL correcta: Asegúrate de que la URL del archivo que estás intentando descargar sea correcta y que no se haya modificado o truncado.
- Habilita la descarga en segundo plano: En algunas versiones de SharePoint, la descarga en segundo plano debe estar habilitada en la configuración del sitio. Verifica si esta configuración está habilitada.
- Usa un navegador diferente: Intenta descargar el archivo utilizando un navegador web diferente para descartar cualquier problema específico del navegador.
- Contacta con el soporte de SharePoint: Si el problema persiste, considera comunicarte con el soporte de SharePoint para obtener asistencia adicional.
Código actualizado:
El siguiente código actualizado utiliza la biblioteca CSOM para descargar el archivo:
vb Imports Microsoft.SharePoint.Client Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim siteUrl As String = "https://example.sharepoint.com/sites/TRAINING/" Dim ctx As ClientContext = New ClientContext(siteUrl) ctx.Credentials = New SharePointOnlineCredentials(username, password) Dim web As Web = ctx.Web ctx.Load(web) ctx.ExecuteQuery() Console.WriteLine("Connected to {0}", web.Title) Dim folderPath As String = "Documents/Example.xlsx" Dim file As Microsoft.SharePoint.Client.File = web.GetFileByServerRelativeUrl(folderPath) ctx.Load(file) ctx.ExecuteQuery() Dim fileInfo As File = file.OpenBinaryStream() Dim docPath As String = "C:\Users\Public\Documents\Example.xlsx" Using outputStream As New FileStream(docPath, FileMode.CreateNew) fileInfo.CopyTo(outputStream) End Using Console.WriteLine("File downloaded successfully") End Sub
Respondida el Dec 18, 2020 a las 03:36 - por Gemini
Votos positivos: 0 | Votos negativos: 0