Skip to main content
Version: 8.1

File management examples

Level: intermediate
Example

Get an instance of a class that implements the IFile interface.

/* Get the file factory. */
IFileFactory fileFactory = UserConnection.GetFileFactory();
/* Creating a file locator for a file identified by the recordId and stored in the "ActivityFile" DB table ("Attachments" for the "Activity" object). */
var fileLocator = new EntityFileLocator("ActivityFile", recordId);
/* Pass the created locator to the Get method of the factory. */
IFile file = fileFactory.Get(fileLocator);
/* This will return an instance of a class that implements the IFile interface. Use it to manupulate the file and its contents. */
Example

Create a new file bound to an Activities record.

Creating a new file
/* Create a unique ID for the new file. */
Guid fileId = Guid.NewGuid();
/* Create a file locator for the new file. */
var fileLocator= new EntityFileLocator("ActivityFile", fileId);
/* Get an IFile object for the new file. */
IFile file = UserConnection.CreateFile(fileLocator);
/* There is no file metadata or file content in the available file storages. Specify the file name in the file metadata. */
file.Name = "New file";
/* Set an attribute for the new file: bind the file to an Activity record with the activityId key. This is file metadata as well. */
file.SetAttribute("ActivityId", activityId);
/* Save the file metadata Do this BEFORE saving the content. */
file.Save();
/* byte[] content – this is the file contents. */
var content = new byte[] {0x12, 0x34, 0x56};
using (var stream = new MemoryStream(content)) {
/* Save the content to the database. FileWriteOptions.SinglePart implies that the contents will be transferred without breaking into smaller parts. */
file.Write(stream, FileWriteOptions.SinglePart);
}
Example

Get the file content.

Read the file content
using Terrasoft.Common;

var content = new byte[]();
Guid recordId = Guid.NewGuid();

/* Create a file locator for the new file. */
var fileLocator = new EntityFileLocator("ActivityFile", recordId);
IFile file = UserConnection.GetFile(fileLocator);

/* Read the contents of the file in the content byte array. Remember to free the stream object by utilizing using! */
using (Stream stream = file.Read()) {
content = stream.ReadToEnd();
}
Example

Copy a file, then move it to a new location and delete it.

Copy, move, and delete a file
var content = new byte[]();
/* Get the file with the file locator. */
var fileLocator = new EntityFileLocator("ActivityFile", fileId);
IFile file = UserConnection.GetFile(fileLocator);
/* Read the contents of the file in the content byte array. Remember to free the stream object by utilizing using! */
using (Stream stream = file.Read()) {
content = stream.ReadToEnd();
}
/* Copy the file. */
 
/* Create a new IFile to copy the current file. */
Guid copyFileId = Guid.NewGuid();
var copyFileLocator = new EntityFileLocator("ActivityFile", copyFileId);
IFile copyFile = UserConnection.CreateFile(copyFileLocator);
copyFile.Name = file.Name + " - Copy";
copyFile.Save();
 
/* Copy the contents of the first file to the new file. */
copyFile.Write(new MemoryStream(content), FileWriteOptions.SinglePart);
 
/* An alternate way to copy the file. */
file.Copy(copyFile);
 
/* Move the file. */
 
/* Create a new file to copy the current file. */
Guid moveFileId = Guid.NewGuid();
var moveFileLocator = new EntityFileLocator("ContactFile", moveFileId); IFile moveFile = UserConnection.CreateFile(moveFileLocator);
moveFile.Save();
 
/* Move to the new location. */
file.Move(moveFile);
 
/* Delete the original file. */
file.Delete();