Выгрузка вложений в локальную папку на сервере


Чтобы сохранить один или несколько вложенных файлов из атрибута типа «Документ» в локальную папку на сервере, используйте приведённый ниже скрипт в настройках кнопки.

Здесь:

C:\document\ — путь для скачивания файлов на сервере;

Document — системное имя атрибута типа «Документ».

using System; 
using System.Collections.Generic;
using System.Linq;
using Comindware.Data.Entity;
using Comindware.TeamNetwork.Api.Data.UserCommands;
using Comindware.TeamNetwork.Api.Data;
using System.IO;
class Script
{
    public static UserCommandResult Main(UserCommandContext userCommandContext, Comindware.Entities entities)
    {
        try {
//Укажите путь для скачивания файлов на сервере
              var path = @"C:\document\";
//"Document" – поменяйте на системное имя своего атрибута типа «Документ»
              var data = Api.TeamNetwork.ObjectService.GetPropertyValues(new string[] {userCommandContext.ObjectIds[0]}, new string[] {"Document"});
//"Document" – поменяйте на системное имя своего атрибута типа «Документ»
        var documentIdsObj = data[userCommandContext.ObjectIds[0]]["Document"];
              var documentIds = documentIdsObj as IEnumerable<object>;
                  if (documentIds == null)
                     {documentIds = new string[] {documentIdsObj as string};}
                  foreach (var documentIdObj in documentIds)
                          {
                           var documentId = documentIdObj as string;
                           var documentData = Api.TeamNetwork.DocumentService.GetContent(documentId);
                           var documentInfo = Api.TeamNetwork.DocumentService.GetDocument(documentId);
                           var docData = new Document
                               {
                                Title = documentData.Name,
                                Extension = documentInfo.Extension
                               };
                                 var stream = new MemoryStream();
                                 stream.Write(documentData.Data, 0, documentData.Data.Length);
                                 stream.Seek(0, SeekOrigin.Begin);
                                 var filepath = path + documentData.Name;
                                 using(FileStream outstr = new FileStream(filepath, FileMode.Create))
                                    {
                                     stream.CopyTo(outstr);
                                     }
                                      }
                               }
                               catch
                               {
                                var badresult = new UserCommandResult
                                    {
                                      Success = true,
                                      Commited = true,
                                      ResultType = UserCommandResultType.DataChange,
                                      Messages = new[]
                                         {
                                          new UserCommandMessage
                                            {
                                             Severity = SeverityLevel.Normal,
                                             Text = "Неудачно"
                                              }
                                            }
                                  };
                                  return badresult;
                               }
                               var result = new UserCommandResult
                               {
                                 Success = true,
                                 Commited = true,
                                 ResultType = UserCommandResultType.DataChange,
                                 Messages = new[]
                                    {
                                     new UserCommandMessage
                                        {
                                         Severity = SeverityLevel.Normal,
                                         Text = "Удачно"
                                        }
                                  }
                   };
                   return result;
    }
}

 


Настраиваемые Поля

Номер Статьи: 2106
Размещено: Tue, Aug 16, 2022
Последнее обновление: Thu, Jun 20, 2024

Online URL: https://kb.comindware.ru/article/vygruzka-vlozhenij-v-lokalnuyu-papku-na-servere-2106.html