Upload Files in Lightning Component | how to upload file dynamically using the wrapper class in Salesforce


Hey guys, In this post we are going to learn about how to upload files in Salesforce lightning component.

In this example we will attached the files from Custom sObject by help of wrapper apex class in lightning component.

Files we used in this post example:-

File Name File Type Description
uploadAttachmentCmp.cmp Lightning Component It is used to user interface display upload button and toast success message on browser.
uploadAttachmentCmpConroller.js JavaScript Controller File It is used for client side javascript function that is communicate to apex class method.
uploadFileController.apxc Apex Class Controller Upload the file into database server

Custom Object:- childObjTrigger__c


Custom Object Upload the attachment files on custom sObject Files & Attechment section.

Final Output

file upload in lightning component -- w3web.net


You can download file directly from github by Click Here.


Other related post that would you like to learn in Salesforce


Note:- Custom sObject >> childObjTrigger__c

You need to change custom sObject name with your custom sObject name.

Step 1:- Create Lightning Component : uploadAttachmentCmp.cmp

From Developer Console >> File >> New >> Lightning Component

uploadAttachmentCmp.cmp [Lightning Component File]

  1.    <aura:component controller="uploadFileController" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >
  2. 	<aura:attribute name="wrapListItems" type="childObjTrigger__c[]"/>
  3.        <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
  5.        <aura:attribute name="accept" type="List" default="['.jpg', '.jpeg','.pdf']"/>
  6.        <aura:attribute name="multiple" type="Boolean" default="true"/>
  7.        <aura:attribute name="disabled" type="Boolean" default="false"/>   
  9.     <div class="slds">        
  11.         <table class="slds-table slds-table--bordered slds-table--col-bordered" style="border-collapse:collapse;">
  12.             <thead> 
  13.                 <tr>                    
  14.                     <th>Attachment</th>                   
  15.                 </tr>
  16.             </thead>
  17.             <tbody>
  18.                 <aura:iteration items="{!v.wrapListItems}" var="childObjVar" indexVar="index">
  19.                     <tr id="{!childObjVar.recordId}">                        
  20.                         <td>
  21.                             <lightning:fileUpload
  22.                               multiple="{!v.multiple}" 
  23.                               accept="{!v.accept}"
  24.                               recordId="{!childObjVar.recordId}" 
  25.                               onuploadfinished="{!c.uploadFileAction}" disabled="{!v.disabled}"/>
  26.                         </td>
  27.                     </tr>
  28.                 </aura:iteration>
  29.             </tbody>
  30.         </table>        
  32.         <br/><br/>
  33.    <!--Start RelatedTopics Section-->
  34. <div style="border:1px #ddd solid; padding:10px; background:#eee; margin:40px 0;">
  36.             <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>
  38.             <br/><br/>
  39.             <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>
  40.             <div style="display:block; overflow:hidden;"> 
  41.                 <div style="width: 50%; float:left; display:inline-block">
  42.                     <ul style="list-style-type: square; font-size: 16px; margin: 0 0 0 54px; padding: 0;"> 
  43.                         <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>
  44.                         <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>
  45.                         <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>
  46.                         <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>
  47.                         <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>
  48.                     </ul>
  49.             </div>
  51.             <div style="width: 50%; float:left; display:inline-block">
  52.                     <ul style="list-style-type: square; font-size: 16px; margin: 0 0 0 54px; padding: 0;"> 
  53.                         <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>
  54.                         <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>
  55.                         <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>
  56.                         <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>
  57.                         <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>
  58.                     </ul>
  59.                 </div>
  60.                <div style="clear:both;"></div> 
  61.                <br/>
  62.                 <div class="youtubeIcon">
  63.                     <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>
  64.                 </div>
  65.     </div>
  67. </div>
  69.   <!--End RelatedTopics Section-->
  71.     </div>
  73.    </aura:component>

Step 2:- Create Lightning Component : uploadAttachmentCmpController.js

From Developer Console >> File >> New >> Lightning Component >> JavaScript Controller

uploadAttachmentCmpController.js [JavaScript Controller]

  1.    ({
  2.     doInit : function(component, event, helper) {
  3.         var action = component.get("c.childObjWrapMethod"); 
  5.         action.setCallback(this, function(response){
  6.             var state = response.getState();
  8.             if(state=='SUCCESS'){
  9.                 var result = response.getReturnValue();                
  10.                 component.set('v.wrapListItems',result);
  11.             }
  12.         });
  13.         $A.enqueueAction(action);
  14.     },
  16.     uploadFileAction : function(component, event, helper) {
  17.         var uploadedFiles = event.getParam("files");
  18.         var documentId = uploadedFiles[0].documentId;
  19.         var fileName = uploadedFiles[0].name;
  20.         var toastEvent = $A.get("e.force:showToast");
  21.         toastEvent.setParams({
  22.             "title": "Success!",   
  23.             "type": "success",
  24.             "message": "File "+fileName+" Uploaded successfully."
  25.         });
  26.         toastEvent.fire();
  27.         $A.get('e.force:refreshView').fire();         
  28.        },
  29.    })

Step 3:- Create Lightning Application : uploadFileController.apxc

From Developer Console >> File >> New >> Apex Class

uploadFileController.apxc [Apex Class Controller]

  1.    public class cloneFilesFromOldCaseToNew {
  3.     public class wrapperChildObjClass{                
  4.         @AuraEnabled
  5.         public Id recordId;        
  7.         public wrapperChildObjClass(Id recordId){            
  8.             this.recordId = recordId;                
  9.         }
  10.     }
  13.     @AuraEnabled
  14.     public static List<wrapperChildObjClass> childObjWrapMethod(){
  15.       List<wrapperChildObjClass> wrapObj = NEW List<wrapperChildObjClass>();   
  16.        List<childObjTrigger__c> childObjList = [SELECT Id, Name FROM childObjTrigger__c LIMIT 1];         
  17.         FOR(childObjTrigger__c childObjWrp: childObjList){
  18.             wrapObj.add(NEW wrapperChildObjClass(childObjWrp.Id));
  19.         }     
  20.         RETURN wrapObj;
  21.      }    
  22.    }


Further post that would you like to learn in Salesforce




FAQ (Frequently Asked Questions)

How do I upload files to Salesforce?

Enable the preference to upload files as Salesforce Files in Salesforce Classic in Setup. Type Salesforce Files in the Quick Find box, select General Settings, and then click Files uploaded to the Attachments related list on records are uploaded as Salesforce Files, not as attachments.

How do you display an image from static resources in the lightning component?

We can use $Resource. resourceName within an expression. resourceName is the Name of the static resource.

What is ParentId in Attachment Salesforce?

A ParentId is the 18-character Salesforcer Id of the record that the attachment belongs to. To get started creating and updating attachments, first, load the {salesforcer} and {dplyr} packages and login, if needed.

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

Hi, This is Vijay Kumar behind the admin and founder of w3web.net. I am a senior software developer and working in MNC company from more than 8 years. I am great fan of technology, configuration, customization & development. Apart of this, I love to write about Blogging in spare time, Working on Mobile & Web application development, Salesforce lightning, Salesforce LWC and Salesforce Integration development in full time. [Read full bio] | | The Sitemap where you can find all published post on w3web.net

Leave a Comment