{"id":1105,"date":"2013-12-24T12:00:24","date_gmt":"2013-12-24T11:00:24","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1105"},"modified":"2013-12-24T11:47:49","modified_gmt":"2013-12-24T10:47:49","slug":"sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/","title":{"rendered":"[Sharepoint 2013]Distintas formas de  subir documentos a una biblioteca mediante programaci\u00f3n"},"content":{"rendered":"<p>El otro d\u00eda recib\u00ed una consulta via Twitter sobre como poder subir ficheros a una biblioteca SharePoint. Yo le comente que hab\u00eda escrito varios <a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2013\/09\/17\/sharepoint-subir-ficheros-de-gran-tamano-bibliotecas-con-el-modelo-de-objetos-cliente\/\" target=\"_blank\">post <\/a>al respecto, la persona que me realiz\u00f3 la consulta me dijo se puede hacer con el modelo de objetos cliente de JavaScript? la respuesta es s\u00ed pero&#8230;. bueno todas las ventajas e inconvenientes de utilizar una opci\u00f3n u otra son las que voy a tratar de explicar en este post, es decir las distintas formas de subir un documento a una biblioteca de SharePoint mediante programaci\u00f3n.<\/p>\n<p><!--more--><\/p>\n<p>Dado que SharePoint es una herramienta que dispone de muchas API&#8217;s esta acci\u00f3n de subir un documento a una biblioteca se puede hacer de varias formas: utilizando el modelo de objetos en Cliente de JavaScript o .NET, \u00a0utilizando la API REST, utilizando el modelo de objetos de Servidor, bien implementando un servicio (Web API\/ Manejador).<\/p>\n<h2>Utilizando el modelo de objetos JavaScript<\/h2>\n<p>En la actualidad gran partes de nuestros desarrollos se centran en utilizar JavaScript, esto nos proporciona una capa frontal mucho m\u00e1s r\u00e1pida que con los tradicional WebParts (el maestro Gustavo dice que en 4 a\u00f1os ya no desarrollaremos ning\u00fan WebPart). Para subir el fichero lo podemos hacer de la siguiente forma:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n  var ctx = new SP.ClientContext.get_current();\r\n  var createInfo = new SP.FileCreationInformation();\r\n  createInfo.set_content(content); \/\/setting the content of the new file\r\n  createInfo.set_overwrite(true);\r\n  createInfo.set_url(filename);\r\n  this.files = ctx.get_web().getFolderByServerRelativeUrl(serverRelativeUrl).get_files();\r\n  ctx.load(this.files);\r\n  this.files.add(createInfo);\r\n  ctx.executeQueryAsync(\r\n Function.createDelegate(this,\r\n                        function () { }),\r\n  Function.createDelegate(this,\r\n                        function (sender, args) {  }));\r\n <\/pre>\n<p>Viendo este c\u00f3digo la \u00fanica duda es de donde obtengo la variable filename, esta varible haciendo uso de la API de HTML5 obtengo los ficheros que se han seleccionado y una vez los tengo los leo y los envio a SharePoint siguiendo este c\u00f3digo<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n var file = document.getElementById(&quot;inputFile&quot;).files&#x5B;0];\r\n var bytes = new Uint8Array(file );\r\n                var content = new SP.Base64EncodedByteArray(); \/\/base64 encoding\r\n                for (var b = 0; b &lt; bytes.length; b++) {\r\n                    content.append(bytes&#x5B;b]);\r\n                }\r\n<\/pre>\n<p><strong>Inconvenientes<\/strong><br \/>\nEl principal motivo por el que este forma no se usa, es que tenemos un limite de tama\u00f1o de fichero de <strong>1.5 Megas<\/strong> todo lo que sea un fichero de mayo tama\u00f1o no se puede subir con lo cual ofrecer esta soluci\u00f3n a un cliente es una muy mala practica y una fuente de problemas.<\/p>\n<h2> Utilizando el modelo de Objetos de Servidor<\/h2>\n<p>Utilizando el modelo de objetos de servidor podemos subir ficheros de cualquier tama\u00f1o, para ello la soluci\u00f3n que podemos hacer es algo como el siguiente c\u00f3digo .NET.<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n  using (SPSite site = new SPSite(SPContext.Current.Site.ID))\r\n                {\r\n                    using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))\r\n                    {\r\n                        web.AllowUnsafeUpdates = true;\r\n                        SPList list = web.Lists&#x5B;&quot;NameList&quot;];\r\n                        SPListItem item = list.GetItemById(itemId);\r\n\r\n                        int FileLen = file.ContentLength;\r\n                        byte&#x5B;] input = new byte&#x5B;FileLen];\r\n\r\n                        \/\/ Initialize the stream.\r\n                        System.IO.Stream fileStream = file.InputStream;\r\n\r\n                        \/\/ Read the file into the byte array.\r\n                        fileStream.Read(input, 0, FileLen);\r\n\r\n                        try\r\n                        {\r\n                            item.Attachments.Delete(file.FileName);\r\n                        }\r\n                        catch (Exception)\r\n                        { }                        \r\n                        item.Attachments.Add(file.FileName, input);\r\n\r\n                        item.Update();\r\n                        web.AllowUnsafeUpdates = false;\r\n                    }\r\n                }\r\n<\/pre>\n<p><strong>Inconvenientes<\/strong><br \/>\nEl principal inconveniente que podemos tener es que estemos implementando una soluci\u00f3n para Office365 que dado que no podemos tener nada en el servidor NO es una soluci\u00f3n que se pueda hacer \ud83d\ude41<\/p>\n<h2> Utiliando el modelo de Objetos de Cliente .NET <\/h2>\n<p>En este <a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2013\/09\/17\/sharepoint-subir-ficheros-de-gran-tamano-bibliotecas-con-el-modelo-de-objetos-cliente\/\" target=\"_blank\">post <\/a>ya detalle como hacerlo y como poder aumentar ficheros de gran de tama\u00f1o \ud83d\ude42<\/p>\n<p><strong> Inconveniente <\/strong><br \/>\nEl principal inconveniente que podemos tener es el mismo que con el modelo de objetos en Servidor: <strong>Office365<\/strong>. Aqu\u00ed al contrario que en el modelo de objetos servidor si que se puede hacer uso pero haciendo una soluci\u00f3n SandBox y claro hacer una soluci\u00f3n SandBox que Microsoft la ha dado por Obsoleta\/Deprecated y que quien sabe si en una futura actualizaci\u00f3n ya no existan y basar nuestro desarrollo en algo que no sabemos el tiempo que le queda no es la mejor opci\u00f3n ni la m\u00e1s elegante. Se podr\u00eda hacer implementando una APP que realice esta funci\u00f3n pero bajo mi punto de vista es como si nos compramos un Ferrari para ir por la monta\u00f1a \ud83d\ude42<\/p>\n<h2> Utilizando la API Rest<\/h2>\n<p>He dejado la opci\u00f3n buena y bonita para el final \ud83d\ude42 La API Rest de SharePoint creo que se puede mejorar en bastantes aspectos pero por ejemplo para el tema de ficheros la soluci\u00f3n es perfecta. Porque digo perfecta porque es valida para todos los entornos (Onpremise, Online) y porque podemos subir ficheros de una capacidad <strong>m\u00e1xima de 2 GB <\/strong>como :<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nfunction ProcessUpload(fileInput, docLibraryName, folderName,h,j)\r\n{\r\n    var reader = new FileReader();\r\n\treader.readAsArrayBuffer(fileInput);\r\n\t\t\r\n    reader.onload = function (result) {       \r\n        PerformUpload(docLibraryName, fileInput.name, folderName, result.target.result,h,j);\r\n    };\r\n\r\n}\r\nfunction PerformUpload(libraryName, fileName, folderName, fileData,i,j) {\r\n    var url;\r\n\turl= targetSiteUrl +&quot;\/_api\/web\/lists\/getByTitle('&quot;+libraryName +&quot;')\/RootFolder\/folders('&quot;+folderName  +\r\n\t\t\t\t&quot;')\/files\/add(url='&quot; + fileName +&quot;',overwrite='true')&quot;\r\n\t\t\t\tdebugger;\r\n\t\t$.ajax({\r\n                    url: url,\r\n                    type: &quot;POST&quot;,\r\n                    data: fileData,\r\n                    processData: false,\r\n\t\t\t\t\t contentType: false,\r\n                    headers: {\r\n                        &quot;accept&quot;: &quot;application\/json;odata=verbose&quot;,\r\n                        &quot;X-RequestDigest&quot;: $(&quot;#__REQUESTDIGEST&quot;).val(),\r\n                        &quot;content-length&quot;: fileData.byteLength\r\n                    },\r\n                    success: function (data) {\r\n                      alert(&quot;File Upload Exit&quot;);\r\n                    },\r\n                    error: function (err) {\r\n                        alert(&quot;Error update item&quot;);\r\n                    }\r\n                });\r\n}\r\n<\/pre>\n<p><strong>Observaciones<\/strong><br \/>\nEn este punto de subir el fichero de esta forma tenemos que tener en cuenta dos valores que son el processData y el contentType si estos valores no los establecemos a False, el fichero lo subiremos pero en el momento que lo vayamos a abrir nos indicar\u00e1 que esta corrupto. Este motivo es porque el fichero lo interpretara como binario y por lo tanto no lo podemos abrir. Otro aspecto que tenemos que tener en cuenta es que en esta opci\u00f3n no hemos tenido que leer el fichero el valor que obtenemos directamente no hace falta leerlo, lo cual hace que sea mucho m\u00e1s r\u00e1pido ya que nos evitamos hacer dos lecturas.<\/p>\n<p><strong>Inconvenientes<\/strong><br \/>\nPara hacer esta funcionalidad con JavaScript es necesario que utilicemos un servidor moderno IE10, la \u00faltima versi\u00f3n Chrome y Mozilla porque si no interpreta HTML5 no podemos obtener los ficheros que se han seleccionado.<\/p>\n<h2>Conclusiones<\/h2>\n<p>En SharePoint tiene una ventaja que en ocasiones puede ser una lastre, es que se pueden hacer las cosas de muchas maneras. Esto pude hacer que podamos seleccionar la opci\u00f3n que mejor se adapte a nuestro perfil o nuestro conocimiento pero esto puede provocar que no se seleccione la mejor opci\u00f3n.<\/p>\n<p> <strong>Referencias<\/strong><br \/>\n<a href=\"http:\/\/www.shillier.com\/archive\/2013\/03\/26\/uploading-files-in-sharepoint-2013-using-csom-and-rest.aspx\">http:\/\/www.shillier.com\/archive\/2013\/03\/26\/uploading-files-in-sharepoint-2013-using-csom-and-rest.aspx <\/a><br \/>\n<a href=\"http:\/\/abandon.ie\/notebook\/simple-file-uploads-using-jquery-ajax\">http:\/\/abandon.ie\/notebook\/simple-file-uploads-using-jquery-ajax<\/a><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>El otro d\u00eda recib\u00ed una consulta via Twitter sobre como poder subir ficheros a una biblioteca SharePoint. Yo le comente que hab\u00eda escrito varios post al respecto, la persona que me realiz\u00f3 la consulta me dijo se puede hacer con &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,11],"tags":[84,83,82,26],"class_list":["post-1105","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","category-sharepoint-2013","tag-bibliotecas","tag-documentos","tag-programacion","tag-sharepoint"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n - Desarrollando sobre SharePoint<\/title>\n<meta name=\"description\" content=\"En este post vamos a explicar las distintas formas de subir documentos a una biblioteca de SharePoint.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"En este post vamos a explicar las distintas formas de subir documentos a una biblioteca de SharePoint.\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n\",\"datePublished\":\"2013-12-24T11:00:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/\"},\"wordCount\":1152,\"commentCount\":0,\"keywords\":[\"bibliotecas\",\"documentos\",\"programacion\",\"sharepoint\"],\"articleSection\":[\"buenas practicas\",\"sharepoint 2013\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/\",\"name\":\"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"datePublished\":\"2013-12-24T11:00:24+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"En este post vamos a explicar las distintas formas de subir documentos a una biblioteca de SharePoint.\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n - Desarrollando sobre SharePoint","description":"En este post vamos a explicar las distintas formas de subir documentos a una biblioteca de SharePoint.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/","twitter_card":"summary_large_image","twitter_title":"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n - Desarrollando sobre SharePoint","twitter_description":"En este post vamos a explicar las distintas formas de subir documentos a una biblioteca de SharePoint.","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n","datePublished":"2013-12-24T11:00:24+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/"},"wordCount":1152,"commentCount":0,"keywords":["bibliotecas","documentos","programacion","sharepoint"],"articleSection":["buenas practicas","sharepoint 2013"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/","name":"[Sharepoint 2013]Distintas formas de subir documentos a una biblioteca mediante programaci\u00f3n - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"datePublished":"2013-12-24T11:00:24+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"En este post vamos a explicar las distintas formas de subir documentos a una biblioteca de SharePoint.","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-2013-api-rest-csom-o-modelo-servidor-para-subir-documentos-una-biblioteca\/"]}]},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1105"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1105\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}