Для того, чтобы добавить файл к объекту, надо сначала получить объект, добавить (если его там нет) атрибут «файл» и после записать туда файл.
using System;
using System.IO;
using Intermech;
using Intermech.Interfaces;
var pathToFile = "D:\1.txt";
var docObject = scriptSession.GetObject(9999);
var objAttrFile = scriptSession.GetObjectAttribute(docObject.ObjectID, MetaDataHelper.GetAttributeTypeID(SystemGUIDs.attributeFile), false, false)
?? docObject.Attributes.AddAttribute(MetaDataHelper.GetAttributeTypeID(SystemGUIDs.attributeFile), false);
var fileNameService = scriptSession.GetCustomService(typeof(IFileNamesService)) as IFileNamesService;
var newFileName = fileNameService.GetUniqueFileName(Path.GetFileName(pathToFile), docObject.ObjectID, scriptSession.SessionGUID);
using (var fs = new FileStream(pathToFile, FileMode.Open, FileAccess.Read))
{
var bi = new BlobInformation(0, 0, DateTime.Now, newFileName, ArcMethods.ZLibPacked, "Тут будет комент", FileTypes.ftNormal, scriptSession.UserID);
var bpc = new BlobProcWriter(objAttrFile, 0, bi, fs, null, null);
bpc.WriteData(scriptSession);
}
Но это, так сказать, низкоуровневое добавление. Если надо из клиента просто добавить/обновить, то можно это сделать вот таким вот методом:
using Intermech;
using Intermech.Files;
using Intermech.Interfaces;
using Intermech.Interfaces.Client;
using Intermech.Files;
using System;
using System.IO;
var pathToFile = "D:\\1.txt";
var docObject = scriptSession.GetObject(9999);
var fileInfo = new FileInfo(pathToFile);
var uploadState = new FileState(Path.GetFileName(pathToFile), fileInfo.LastWriteTimeUtc, fileInfo.Length);
var uploadAction = new UploadFileAction(uploadState, pathToFile);
uploadAction.AllowNewFiles = true;
uploadAction.FileType = FileTypes.ftNormal;
FileOperations.BatchUpdateFiles(docObject.ObjectID, new IFileAttributeAction[] { uploadAction });
new TrackUploadedFileAction(ClientContext.FileVault.WorkArea.FileTracker, docObject.ObjectID, uploadAction).Perform();
При этом, необходимо учесть следующее при таком добавлении:
- Что документ на своем шаге ЖЦ позволяет добавлять файл.
- Что файл достаточного размера. Бывали у меня случаи загрузки over 5 гигов файлов и там подход интереснее.