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.
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
Other related post that would you like to learn in LWC
Step 1:- Create Lightning Component : fileAttachmentCmp.cmp
From Developer Console >> File >> New >> Lightning Component
fileAttachmentCmp.cmp [Lightning Component File]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<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> </div> </aura:component> |
Step 2:- Create Lightning Component : fileAttachmentCmpConroller.js
From Developer Console >> File >> New >> Lightning Component >> JavaScript Controller
fileAttachmentCmpConroller.js [JavaScript Controller]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
({ 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]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
({ 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]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
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
You Can Learn Stock Market Fundamental Analysis with the best stock market course in Indore. Stock Homes provide live practical knowledge with money & risk management skills courses from Stock Homes. Learn Stock Market online with courses like Diploma in Financial Market. Join Short-Term Course with 100% Self-Trading Programme for Beginners Enroll Now! Get NISM certification courses at Stock Homes Best NISM Course.
You Can Join Stock Market Classes In IndoreBest NISM & Trading Share Market Technical Analysis
very informative
good keep it on
Very Good Article To understand Everything
Good article
In this blog I get a great post sir
In this blog I get a great post sir please also visit my blog I post great content
Thanks For Sharing The Amazing content. I Will also share with my friends. Great Content thanks a lot.
Very Nice Post
Do Follow 5 Backlinks