There are 3 standard salesforce objects to store file attachments.
Content Document, ContentDocumentVersion, ContentDocumentLink.
Here is the article to talk about these objects and relationship.
https://www.forcetalks.com/blog/contentdocument-and-contentversion-in-salesforce-an-overview/
This post is all about how to create/delete content document though Apex. Here is code snippet
// Insert Content Version record
ContentVersion contentVersionRec = new ContentVersion(Title='filename',PathOnClient ='FileName.pdf',VersionData = bodyBlob,origin = 'H');
INSERT contentVersionRec; // this will insert one record in ContentDocument and ContentVersion ,ContentDocument is parent and ContentVersion is child record
// get contentdocument id
contentVersionRec = [SELECT Id, Title, ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionRec .Id LIMIT 1];
// Create Content Document Link record- This will attach file to particular record
ContentDocumentLink contentlink = new ContentDocumentLink();
contentlink.LinkedEntityId = 'Sobject Id'; // for example lead or opportunity record Id
contentlink.contentdocumentid = contentVersionRec .contentdocumentid;
contentlink.ShareType = 'I';
contentlink.Visibility = 'AllUsers';
INSERT contentlink;
Note - Same content document can be shared with other objects, we just have to create ContentDocumentLink records.
Deleting File Attachments
//Delete ContentDocumentLink
Delete [select id from ContentDocumentLink where contentdocument.Title = 'ES-0275' and LinkedEntityId = '00Q1Q00001IZxcAUAT'];
// Delete Content Version
Delete[select id from ContentVersion where Title = 'ES-0275'];
// Delete Content Document
Detete[select id from ContentDocument where Title = 'ES-0275'];
Note - If we delete content document then contentdocumentversion and contentdocumentlink will be deleted automatically.
No comments:
Post a Comment