En este post vamos a explicar como subir archivos a una biblioteca de documentos en Sharepoint 2010. Primero disponemos del conocido control FileUpLoad, que se utiliza para subir archivos seleccionando la ruta dónde se encuentra. Dicho control  pinta un html como el siguiente:

<input id="File1" type="file" runat="server" title="upldFileBox">

-Inicialmente obtenemos el archivo a subir en una secuencia de bytes.

Dim fStream As Stream = File1.PostedFile.InputStream

-Creamos un array de bytes dónde almacenaremos el archivo a subir para poder posteriormente procesarlo. Utilizaremos la función Read para rellenar el array de bytes y la función Close para vaciar los datos del búfer.

Dim contents As Byte() = New Byte(fStream.Length - 1) {}
fStream.Read(contents, 0, Integer.Parse(fStream.Length))
fStream.Close()

– Ya tenemos el archivo  en el formato adecuado para subirlo, sólo quedaría especificar la ruta y agregarlo. Para este ejemplo vamos a imaginar que tenemos la biblioteca de documentos en el root y se llama “BiblioPrueba”, la forma de agregar el documento a esta biblioteca sería el siguiente:

Dim Filename As String = File1.FileName
Dim destUrl As String = SPContext.Current.Site.RootWeb.Url + "/BiblioPrueba/" + Filename
Dim item As SPFile = SPContext.Current.Site.RootWeb.Files.Add(destUrl, contents)

 

El problema más característico de estas situaciones, viene a la hora de subir archivos extremadamente pesados. Habrá que tener en cuenta varias cosas:

  • Sharepoint 2010, en cada aplicación web tiene limitado el número de Mb a subir, por defecto unos 50Mb. Desde la administración central podremos cambiarlo:  “Manage web applications” , seleccionamos la aplicación correspondiente y pinchamos en “General Settings”, ahí encontraremos la propiedad “Maximum Upload Size” que modificaremos a nuestro antojo.
  • Si con esto no funciona habrá que ir al web.config de la aplicación a modificar la siguiente línea que marca los Kb máximos que se pueden subir. Pondremos por ejemplo máximo 200 Mb.
  <system.web>
	    <httpRuntime maxRequestLength="204800" />
  </system.web>

 

SolidQ

SolidQ suministra servicios para plataformas Microsoft que le ayudan a diseñar, integrar y optimizar su utilización de datos