Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inserting file in Salesforce file/attachment object Using custom REST API Uses property of “ContentVersion”, “ContentDocumentLink” and “getBodyAsBlob()” in apex class post method in Salesforce #3

Open
vijayk3327 opened this issue Sep 13, 2023 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@vijayk3327
Copy link
Owner

In this post we are going to learn about How to call an external REST API to uploading files to SFDC file/attachment object using REST call in Salesforce Apex Post Methods.

This example we are uploading files to Salesforce object using custom REST API and property of ContentVersion, ContentDocumentLink and getBodyAsBlob() in Salesforce Apex Class Post Method.

To access the external REST API, First we need to Adding the Remote Site Settings

Setup ➡ Remote Site Settings ➡ Remote Site Name ➡ Enter the URL for the remote site

👉 Get source code live demo link:-

Create Lightning Component
Step 1:- Create Lightning Component : apiIntegrationCmp.cmp

`<aura:component controller="downloadExcelApiCtrl" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >
<aura:attribute name="oppObj" type="Opportunity" default="{'sobjectType' : 'Opportunity'}"/>
<aura:attribute name="oppMode" type="Map"/>
<aura:attribute name="oppName" type="String" default=""/>
<aura:attribute name="response" type="Map"/>
<aura:attribute name="spinnerImg" type="boolean" default="false"/>


<lightning:button variant="brand" label="Insert File in Salesforce" title="Insert File in Salesforce" type="Button" onclick="{!c.apiIntegrateAction}"></lightning:button>



        <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>

</aura:component>`

Create Component JavaScript Controller
Step 2:- Create Lightning Component : apiIntegrationCmpController.js

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

`({
apiIntegrateAction : function(component, event, helper) {
var recordId = component.get("v.recordId");
var oppName = component.get('v.oppName');
var action = component.get("c.fileInsert");
action.setParams({
"url": 'https://test.com/fileInsert',
"recId":recordId,
"oppNameStr": oppName,
"fileName": oppName,
});
action.setCallback(this, function(response){
var state = response.getState(response);

        if(state == "SUCCESS"){
                component.set("v.spinnerImg",false);
                var results = response.getReturnValue();
                console.log('results ' + results);
                var getResponse = JSON.stringify(results);
                //alert(JSON.stringify(results));
                  component.set("v.response", getResponse);  
                 //alert(results.message);
                   var toastEvent = $A.get("e.force:showToast");
                    toastEvent.setParams({
                        'title':'Success',
                        'type':'Success',
                        'message':'File Inserted Successfully in Salesforce'
                    });
                    toastEvent.fire();                    
            }
            else{
                var toastEvent = $A.get("e.force:showToast");
                    toastEvent.setParams({
                        'title':'Error',
                        'type':'Error',
                        'message':'Response Not Found'
                    });
                    toastEvent.fire(); 
            }
    });
    $A.enqueueAction(action);
},

})`

Create Apex Class Controller
Step 3:- Create Apex Class : downloadExcelApiCtrl.apxc

`@RestResource(urlMapping='/insertFileToSalesforce/')
global class downloadExcelApiCtrl {

@AuraEnabled
global static void fileInsert(String recId, String oppNameStr, String url, String fileName) {        
    Http h = NEW Http();   
    HttpRequest req = NEW HttpRequest(); 
    req.setEndpoint(url);
    req.setTimeout(120000);
    req.setMethod('POST');
    req.setHeader('Content-Type', 'application/json;charset=UTF-8');             
    req.setBody('{"oppName": "'+oppNameStr+'"}');
    // Send the request, AND RETURN a response
    HttpResponse res = h.send(req);
    System.debug('response:--> ' + res.getBody());

    BLOB blobData = res.getBodyAsBlob();
    ContentVersion cntVerson = NEW ContentVersion(); 
    cntVerson.VersionData = blobData;
    cntVerson.Title = fileName + '.xlsx';
    cntVerson.PathOnClient = fileName + '.xlsx';        
    INSERT cntVerson;
    system.debug('cntVerson### ' + cntVerson);

    ContentDocumentLink contDocmnt = NEW ContentDocumentLink();
    contDocmnt.ContentDocumentId = [SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id =: cntVerson.Id].ContentDocumentId;
    contDocmnt.LinkedEntityId = recId;
    contDocmnt.ShareType = 'V';
    INSERT contDocmnt;        
}    

}`

👉 Get source code live demo link:-

@vijayk3327 vijayk3327 added the documentation Improvements or additions to documentation label Sep 13, 2023
@vijayk3327 vijayk3327 self-assigned this Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
Status: No status
Development

No branches or pull requests

1 participant