Hey guys, In this post we are going to learn about how to Display an Upload Icon on the lightning component if a object record has files or any kind of attachment..
Requirement:- If upload a custom file on lightning component such like (jpg’, ‘jpeg’,’pdf’, ‘doc’) etc.. then against of every record display should be an attachment Image on right side of table.
- Don’t forget to check out:- Upload Files in Lightning Component Click Here For More Information
Files we used in this post example:-
fileAttachmentCmp.cmp | Lightning Component | It is used for display the name, address, email, and upload file button on the table. |
fileAttachmentCmpConroller.js | JavaScript Controller File | It is used for communicate to server side apex method and fetch the record using init fuction. |
fileAttachmentCmpHelper.js | JavaScript Helper File | It is used for refresh the page after delete the record. |
wrapperCustomObjCtrCmp.apxc | Apex Class Controller | It is used for save the upload images on sObject database. |
Custom Object:- NewStudent__c Custom Object Fields:- Name, Email__c Address__c |
Custom Object and their fields | Display an upload Image on right side of table in the lightning component if a record has an attachment. |
Final Output
You can download file directly from github by Click Here.
Other related post that would you like to learn in Salesforce
Step 1:- Create Lightning Component : fileAttachmentCmp.cmp
From Developer Console >> File >> New >> Lightning Component
fileAttachmentCmp.cmp [Lightning Component File]
<aura:component controller="wrapperCustomObjCtrCmp" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction,lightning:isUrlAddressable" access="global" >
<aura:attribute name="wrapListItems" type="NewStudent__c[]"/>
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="recSelectId" type="String" default=""/>
<aura:attribute name="accept" type="List" default="['.jpg', '.jpeg','.pdf']"/>
<aura:attribute name="multiple" type="Boolean" default="true"/>
<aura:attribute name="disabled" type="Boolean" default="false"/>
<div class="slds slds-p-horizontal--medium">
<table class="slds-table slds-table--bordered slds-table--col-bordered" style="border-collapse:collapse;">
<thead>
<tr>
<th>Record Id</th>
<th>Student Name</th>
<th>Address</th>
<th>Email</th>
<th>Upload File</th>
<th></th>
</tr>
</thead>
<tbody>
<aura:iteration items="{!v.wrapListItems}" var="wrapVar" indexVar="index">
<tr id="{!wrapVar.recStudentId}">
<td>{!wrapVar.recStudentId}</td>
<td>{!wrapVar.studentName}</td>
<td>{!wrapVar.studentAddress}</td>
<td>{!wrapVar.studentEmail}</td>
<td>
<lightning:fileUpload
multiple="{!v.multiple}"
accept="{!v.accept}"
recordId="{!wrapVar.recStudentId}"
onuploadfinished="{!c.uploadFileAction}" disabled="{!v.disabled}"/>
</td>
<td>
<aura:if isTrue="{!wrapVar.checkAttachFile}">
<lightning:buttonIcon tabindex="{!wrapVar.recStudentId}" iconName="utility:upload" name="{!wrapVar.recStudentId}" variant="bare" onclick="{!c.navigateAttachFile}"/>
</aura:if>
</td>
</tr>
</aura:iteration>
</tbody>
</table>
<br/><br/>
<!--Start RelatedTopics Section-->
<div style="border:1px #ddd solid; padding:10px; background:#eee; margin:40px 0;">
<p data-aura-rendered-by="435:0"><img src="https://www.w3web.net/wp-content/uploads/2021/05/thumbsUpLike.png" width="25" height="25" style="vertical-align:top; margin-right:10px;" data-aura-rendered-by="436:0"><strong data-aura-rendered-by="437:0"><span style="font-size:16px; font-style:italic; display:inline-block; margin-right:5px;">Don't forget to check out:-</span><a href="https://www.w3web.net/" target="_blank" rel="noopener noreferrer" style="text-decoration:none;" data-aura-rendered-by="440:0">An easy way to learn step-by-step online free Salesforce tutorial, To know more Click <span style="color:#ff8000; font-size:18px;" data-aura-rendered-by="442:0">Here..</span></a></strong></p>
<br/><br/>
<p data-aura-rendered-by="435:0"><img src="https://www.w3web.net/wp-content/uploads/2021/07/tickMarkIcon.png" width="25" height="25" style="vertical-align:top; margin-right:10px;" data-aura-rendered-by="436:0"><strong data-aura-rendered-by="437:0"><span style="font-size:17px; font-style:italic; display:inline-block; margin-right:5px; color:rgb(255 128 0);">You May Also Like →</span> </strong></p>
<div style="display:block; overflow:hidden;">
<div style="width: 50%; float:left; display:inline-block">
<ul style="list-style-type: square; font-size: 16px; margin: 0 0 0 54px; padding: 0;">
<li><a href="https://www.w3web.net/lwc-get-set-lightning-checkbox-value/" target="_blank" rel="noopener noreferrer">How to get selected checkbox value in lwc</a></li>
<li><a href="https://www.w3web.net/display-account-related-contacts-in-lwc/" target="_blank" rel="noopener noreferrer">how to display account related contacts based on AccountId in lwc</a></li>
<li><a href="https://www.w3web.net/create-lightning-datatable-row-actions-in-lwc/" target="_blank" rel="noopener noreferrer">how to create lightning datatable row actions in lwc</a></li>
<li><a href="https://www.w3web.net/if-and-else-condition-in-lwc/" target="_blank" rel="noopener noreferrer">how to use if and else condition in lwc</a></li>
<li><a href="https://www.w3web.net/get-selected-radio-button-value-and-checked-default-in-lwc/" target="_blank" rel="noopener noreferrer">how to display selected radio button value in lwc</a></li>
</ul>
</div>
<div style="width: 50%; float:left; display:inline-block">
<ul style="list-style-type: square; font-size: 16px; margin: 0 0 0 54px; padding: 0;">
<li><a href="https://www.w3web.net/display-account-related-contacts-lwc/" target="_blank" rel="noopener noreferrer">display account related contacts based on account name in lwc</a></li>
<li><a href="https://www.w3web.net/create-lightning-datatable-row-actions-in-lwc/" target="_blank" rel="noopener noreferrer">how to insert a record of account Using apex class in LWC</a></li>
<li><a href="https://www.w3web.net/fetch-picklist-values-dynamic-in-lwc/" target="_blank" rel="noopener noreferrer">how to get picklist values dynamically in lwc</a></li>
<li><a href="https://www.w3web.net/edit-save-and-remove-rows-dynamically-in-lightning-component/" target="_blank" rel="noopener noreferrer">how to edit/save row dynamically in lightning component</a></li>
<li><a href="https://www.w3web.net/update-parent-object-from-child/" target="_blank" rel="noopener noreferrer">update parent field from child using apex trigger</a></li>
</ul>
</div>
<div style="clear:both;"></div>
<br/>
<div class="youtubeIcon">
<a href="https://www.youtube.com/channel/UCW62gTen2zniILj9xE6LmOg" target="_blank" rel="noopener noreferrer"><img src="https://www.w3web.net/wp-content/uploads/2021/11/youtubeIcon.png" width="25" height="25" style="vertical-align:top; margin-right:10px;"/> <strong>TechW3web:-</strong> To know more, Use this <span style="color: #ff8000; font-weight: bold;">Link</span> </a>
</div>
</div>
</div>
<!--End RelatedTopics Section-->
</div>
</aura:component>
Step 2:- Create Lightning Component : fileAttachmentCmpConroller.js
From Developer Console >> File >> New >> Lightning Component >> JavaScript Controller
fileAttachmentCmpConroller.js [JavaScript Controller]
({
doInit : function(component, event, helper) {
var action = component.get("c.appCustomWrapListMthd");
action.setCallback(this, function(response){
var state = response.getState();
if(state=='SUCCESS'){
var result = response.getReturnValue();
component.set('v.wrapListItems',result);
}
});
$A.enqueueAction(action);
},
uploadFileAction : function(component, event, helper) {
var uploadedFiles = event.getParam("files");
var documentId = uploadedFiles[0].documentId;
var fileName = uploadedFiles[0].name;
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
"title": "Success!",
"type": "success",
"message": "File "+fileName+" Uploaded successfully."
});
toastEvent.fire();
$A.get('e.force:refreshView').fire();
},
})
Step 3:- Create Lightning Component : fileAttachmentCmpHelper.js
From Developer Console >> File >> New >> Lightning Component >> JavaScript Helper
fileAttachmentCmpHelper.js [JavaScript Helper File]
({
refreshView : function(component, event, helper) {
var action = component.get("c.appCustomWrapListMthd");
action.setCallback(this, function(response){
var state = response.getState();
//alert(state);
if(state=='SUCCESS'){
var result = response.getReturnValue();
// alert('result ' + JSON.stringify(result));
component.set('v.wrapListItems',result);
}
});
$A.enqueueAction(action);
}
})
Step 4:- Create Lightning Application : wrapperCustomObjCtrCmp.apxc
From Developer Console >> File >> New >> Apex Class
wrapperCustomObjCtrCmp.apxc [Apex Class Controller]
public class wrapperCustomObjCtrCmp {
public class wrapperCustomClass{
@AuraEnabled
public string studentName;
@AuraEnabled
public string studentEmail;
@AuraEnabled
public string studentAddress;
@AuraEnabled
public Id recStudentId;
@AuraEnabled
public BOOLEAN checkAttachFile= FALSE;
public wrapperCustomClass(string studentName, string studentEmail, string studentAddress, Id recStudentId,BOOLEAN checkAttachFile){
this.studentName = studentName;
this.studentEmail = studentEmail;
this.studentAddress = studentAddress;
this.recStudentId = recStudentId;
this.checkAttachFile=checkAttachFile;
}
}
@AuraEnabled
public static List<wrapperCustomClass> appCustomWrapListMthd(){
List<NewStudent__c> newStudent = NEW List<NewStudent__c>();
List<wrapperCustomClass> custWrapObj = NEW List<wrapperCustomClass>();
List<NewStudent__c> newStudentView =[SELECT Id, Name, Email__c, Address__c FROM NewStudent__c];
Map<Id,contentdocumentlink> projCheckIdDocMap = NEW Map<Id,contentdocumentlink> ();
Set<Id> projChecklistIdSet= NEW Set<Id> ();
FOR(NewStudent__c de: newStudentView) {
projChecklistIdSet.add(de.Id);
}
List<Contentdocumentlink> listDocs = [SELECT Id,LinkedEntityId FROM contentdocumentlink WHERE LinkedEntityId IN :projChecklistIdSet
];
FOR(Contentdocumentlink doc: listDocs) {
projCheckIdDocMap.put(doc.LinkedEntityId, doc);
}
BOOLEAN hasAttch= FALSE;
FOR(NewStudent__c studentObj:newStudentView){
IF(projCheckIdDocMap.get(studentObj.Id)!=NULL){
hasAttch=TRUE;
system.debug('hasAttch###' + hasAttch);
}ELSE{
hasAttch=FALSE;
}
custWrapObj.add(NEW wrapperCustomClass(studentObj.Name,studentObj.Email__c, studentObj.Address__c,studentObj.Id, hasAttch));
}
RETURN custWrapObj;
}
}
Further post that would you like to learn in Salesforce
How do you display an image in the lightning component?
To display images, use the HTML 'img' element. Include an image in your component by uploading it as a static resource or content asset.To display an icon, use the lightning:icon component, which gives you access to Salesforce Lightning Design System icons or your own custom icon.
How do I preview files in lightning component?
A lightning:fileCard component displays a preview of a file. On desktops, clicking the file preview opens the SVG file preview player, enabling you to preview images, documents, and other files in the browser. The file preview player provides quick access to file actions, such as upload, delete, download, and share.
What is lightning out?
Lightning Out is a technology where one can take Lightning components built on the Force.com platform to the external applications like Sharepoint, SAP, Node apps on Heroku and many others.
Related Topics | You May Also Like
Our Free Courses →
👉 Get Free Course →
📌 Salesforce Administrators 📌 Salesforce Lightning Flow Builder 📌 Salesforce Record Trigger Flow Builder |
👉 Get Free Course →
📌 Aura Lightning Framework 📌 Lightning Web Component (LWC) 📌 Rest APIs Integration |