/// <summary> /// Putfile chiamato per l'inserimento in SharePoint del documento. /// </summary> /// <param name="fileforcontenct">Oggetto dal quale prendo i byte del File</param> /// <param name="schedaDocBase">Scheda documento, usata per i parametri in SharePoint</param> /// <param name="_infoutente">Info Utente</param> /// <param name="fileRequest">Oggetto utile alla get del nome file e del Path</param> /// <param name="extention">Estensione del file da inserire nel documentale (es:doc)</param> /// <returns>True false a seconda dell'esito del PUT, non uso Try catch per far tornare l'errore originale</returns> public static bool PutFileInSP(ref DocsPaVO.documento.FileDocumento fileforcontenct, ref SchedaDocumento schedaDocBase, DocsPaVO.utente.InfoUtente _infoutente, ref DocsPaVO.documento.FileRequest fileRequest, string extention) { string sRemoteFileURL = null; string sSPURL = GetServerRoot(); //Istanzio il service SPCopy.Copy sp2010VmCopyService2Put = new SPCopy.Copy(); //Setto le credenziali con le mie prese da db sp2010VmCopyService2Put.Credentials = GetCredentialSP(); //eeeeeee //sp2010VmCopyService2Put.Url = string.Format("{0}/{1}", GetServerProtocollo() + GetServerRootnosites(), "_vti_bin/copy.asmx"); sp2010VmCopyService2Put.Url = string.Format("{0}{1}/{2}/{3}", GetServerProtocollo(), GetServerRootnosites(), GetLibraryRoot(DateTime.Now.Year.ToString(), _infoutente.codWorkingApplication).Replace(@"/", "\\").ToUpper(), "_vti_bin/copy.asmx"); //Nome file sRemoteFileURL = string.Format("{0}_{1}.{2}", _infoutente.codWorkingApplication, fileRequest.versionId, extention); //Url di destinazione sotto SP per la scrittura del file string[] destinationUrls = { Uri.EscapeUriString(GetServerProtocollo() + fileRequest.path) }; //Faccio la Get della UO da passare nei Metadati DocsPaDB.Query_DocsPAWS.Utenti utentiDb = new DocsPaDB.Query_DocsPAWS.Utenti(); DocsPaVO.utente.Ruolo ruolo = utentiDb.GetRuolo(_infoutente.idCorrGlobali, false); schedaDocBase.creatoreDocumento.uo_codiceCorrGlobali = ruolo.uo.codice; //Imposto i metadati. //correzione sabrina -- tutto l'oggetto fileRequest SPCopy.FieldInformation[] myFieldInfoArray = ImpostaMetaDati(ref schedaDocBase, _infoutente, fileRequest); //SPCopy.FieldInformation[] myFieldInfoArray = ImpostaMetaDati(ref schedaDocBase, _infoutente, fileRequest.version); SPCopy.CopyResult[] result; //Put del file sotto Sharepoint e sotto la sitecollection corretta sp2010VmCopyService2Put.CopyIntoItems(sRemoteFileURL, destinationUrls, myFieldInfoArray, fileforcontenct.content, out result); //Gestione errori: if (result[0].ErrorCode != SPCopy.CopyErrorCode.Success) { Console.WriteLine("Error occured during document upload process."); throw new Exception("Error Occured!" + result[0].ErrorCode); } //metadati null SPCopy.FieldInformation myFieldInfo = new SPCopy.FieldInformation(); SPCopy.FieldInformation[] myFieldInfoArrayNull = { myFieldInfo }; byte[] myByteArray; //Faccio la Get solo ed esclusivamente per valorizzare il nuovo contenct[] e il suo lenght. uint myGetUint = sp2010VmCopyService2Put.GetItem(destinationUrls[0], out myFieldInfoArrayNull, out myByteArray); //valorizzo. if (myByteArray == null || myByteArray.Length == 0) { return(false); } fileforcontenct.content = myByteArray; fileforcontenct.length = myByteArray.Length; //Ok torno. return(true); }
/// <summary> /// Getfile chiamato per il Get da SharePoint del documento. /// </summary> /// <param name="filename">Nome del file da concatenare alla URL del server.</param> /// <param name="sitecollectionurl">Parametro che conterrà il nome della site collection (es: 2012_DOCSPA)</param> /// <returns>Il file richiesto a Sharepoint</returns> public static byte[] GetFileFromSP(string filename, string sitecollectionurl) { //Get root string sSPURL = GetServerRoot(); //istanzio il service SPCopy.Copy sp2010VmCopyService2Get = new SPCopy.Copy(); //Do le credenziali sp2010VmCopyService2Get.Credentials = GetCredentialSP(); //Istanzio i metadato vuoti SPCopy.FieldInformation myFieldInfo = new SPCopy.FieldInformation(); SPCopy.FieldInformation[] myFieldInfoArray = { myFieldInfo }; byte[] myByteArray; //Get del documento da Sharepoint sp2010VmCopyService2Get.Url = string.Format("{0}/{1}", GetServerProtocollo() + sSPURL, sitecollectionurl + "/_vti_bin/copy.asmx"); uint myGetUint = sp2010VmCopyService2Get.GetItem(GetServerProtocollo() + filename, out myFieldInfoArray, out myByteArray); //ritorno file return(myByteArray); }