This article provides an example of how to upload an attachment to an Item, taking into consideration that the file may already exist as an attachment on the item.
|Note: There must be a file repository initialized for the SystemWeaver server.|
// Get file to add as attachment
FileInfo file = new FileInfo("C:\\Temp\\test.txt");
// Identify if there already is a file with the same name. Names are what we match on.
// Placeholder for potential previous version of file.
IswFileRevision previousAttachmentRevision = null;
// The attachments on the item.
IswFileRevisions attachments = item.Files;
foreach (IswFileRevision attachment in attachments)
// Match found. Break loop.
previousAttachmentRevision = attachment;
// Compare file Hashes to see if there is any change.
// Hash for the file.
string newFileHash = string.Empty;
if (SWUtility.TryGetFileHash(file.FullName, out newFileHash))
// Hash for the previous attachment, if any.
string attachmentHash = string.Empty;
// Get Hash for attachment if there was a match. If there is no attachment Hash will be string.Empty
if (previousAttachmentRevision != null)
attachmentHash = previousAttachmentRevision.Hash;
// If Hashes differ, upload new file.
// If there was no matching attachment, previousAttachmentRevision will be null...
// ...and it will be uploaded as a new file without previous revisions.
IswFileRevision addedFile = item.AddFileByName(file.FullName, previousAttachmentRevision);
// Add a comment that shows up in the Change log for the file.
addedFile.Comment = "File Added on: " + DateTime.Now;
// Error handling
|Note: It is not possible to attach files to nodes. Nodes are not visible to end-users using the GUI so you would want to put them on the item for this reason. |