Pregunta

Tengo que añadir un nuevo enlace de documento a una biblioteca de documentos utilizando el modelo de objetos de cliente. Sospecho que pudiera copiar el formato del archivo .aspx utilizado en el "enlace a un documento" artículos y subirlo como un archivo normal, pero estoy esperando que hay una manera más ordenada.

Así que lo que quiero hacer es el mismo que el código de ejemplo a continuación, pero en lugar de crear un nuevo documento que quiero crear un nuevo enlace a un documento.

ClientContext context = new ClientContext("http://wdev2008:22880");
context.Load(context.Web);
List list = context.Web.Lists.GetByTitle("Test Doc Link Library");
context.Load(list);
context.ExecuteQuery();

FileCreationInformation fileCreateInfo = new FileCreationInformation();
fileCreateInfo.Content = new byte[] { 0x33 };
fileCreateInfo.Url = "zerobyte";
File file = list.RootFolder.Files.Add(fileCreateInfo);
context.Load(file);
context.ExecuteQuery();

Actualización: Según el Ministerio de Defensa en este foro no estoy permitió a preguntar cómo hacer esto con un servicio web en una pregunta separada por lo que voy a cambiar el título, etiquetas y contenidos de esta cuestión. ¿Alguien sabe cómo hacer el inserto con un servicio de SharePoint web o de control del lado del servidor o cualquier otra cosa?

¿Fue útil?

Solución

Resulta que se puede hacer, pero es un poco de un truco que consiste en tomar una copia de los usos archivo .aspx SharePoint para los enlaces a documentos y haciendo una búsqueda de cadenas y vuelva a colocar en él Creación de un 'vínculo a un documento' elemento de una biblioteca de documentos de SharePoint mediante programación .

I adaptado el ejemplo de usar el modelo de objetos de cliente:

 string docLinkTemplate = null;
 using (System.IO.StreamReader sr = new System.IO.StreamReader("SharePointDocLinkTemplate.txt"))
 {
     docLinkTemplate = sr.ReadToEnd();
 }

 string docLink = "http://myserver/test.doc";
 docLinkTemplate = String.Format(docLinkTemplate, docLink);

 FileCreationInformation fileCreateInfo = new FileCreationInformation();
 fileCreateInfo.Content = Encoding.UTF8.GetBytes(docLinkTemplate);
 fileCreateInfo.Url = "testlinkfordoc.doc.aspx";
 File file = list.RootFolder.Files.Add(fileCreateInfo);
 ListItem fileListItem = file.ListItemAllFields;
 fileListItem["ContentType"] = "Link to a Document";
 FieldUrlValue urlValue = new FieldUrlValue();
 urlValue.Description = "Link to doc test";
 urlValue.Url = docLink;
 fileListItem["URL"] = urlValue;
 context.Load(file);
 context.ExecuteQuery();

(esperemos que el mod no considere este indigno respuesta de nuevo. Lástima los mods en estos sitios web de programación no tiene que llegar representante stackoverflow antes de que puedan comenzar a lanzar su peso alrededor.)

Licenciado bajo: CC-BY-SA con atribución
scroll top