Saturday, 21 June 2014

Multiple Attachments of your choice to particular Record

Upload multiple attachments of your choice value selected from picklist 


Here you can upload attachments to particular account, pass record id from URL and uplaod the attachments:
https://ap1.salesforce.com/0019000000tMrl6

Page code:
-------------

<apex:page standardController="Account" extensions="MultipleUploadController">
  <apex:form >
   <apex:pageBlock title="Upload Multiple Attachment to Object">
     <apex:pageBlockButtons >
      <apex:commandButton value="Upload" action="{!SaveAttachments}"/>
     </apex:pageBlockButtons>
     
     <apex:pagemessages id="MSG"/>
     <apex:actionFunction name="ChangeCount" action="{!ChangeCount}"/> 
     
     <apex:pageBlockSection >
      <apex:pageBlockSectionItem >
       <apex:outputlabel value="How many files you want to upload?"/>
         
       <apex:selectList onchange="ChangeCount() ;" multiselect="false" size="1" value="{!FileCount}">
                        <apex:selectOption itemLabel="--None--" itemValue=""/>
                        <apex:selectOptions value="{!filesCountList}"/>
                    </apex:selectList>
      </apex:pageBlockSectionItem>
     </apex:pageBlockSection>
     
     <apex:pageBlockSection title="Select Files" rendered="{!IF(FileCount != null && FileCount != '', true , false)}">
                <apex:repeat value="{!allFileList}" var="AFL">
                 <apex:inputfile value="{!AFL.body}" filename="{!AFL.Name}" />
                </apex:repeat>
            </apex:pageBlockSection>
   </apex:pageBlock>
  </apex:form>

</apex:page>

Controller code:
------------------

public with sharing class MultipleUploadController {

     //Picklist of tnteger values to hold file count
    public List<SelectOption> filesCountList {get; set;}
    //Selected count
    public String FileCount {get; set;}
    
    public List<Attachment> allFileList {get; set;}
     
    public MultipleUploadController(ApexPages.StandardController controller) {
           filesCountList = new List<SelectOption>() ;
        FileCount = '' ;
        allFileList = new List<Attachment>() ;
        
        //Adding values count list - you can change this according to your need
        for(Integer i = 1 ; i < 11 ; i++)
            filesCountList.add(new SelectOption(''+i , ''+i)) ;
    }
    public Pagereference SaveAttachments()
    {
        String accId = System.currentPagereference().getParameters().get('id');
        if(accId == null || accId == '')
            ApexPages.addmessage(new ApexPages.message(ApexPages.Severity.ERROR,'No record is associated. Please pass record Id in parameter.'));
        if(FileCount == null || FileCount == '')
            ApexPages.addmessage(new ApexPages.message(ApexPages.Severity.ERROR,'Please select how many files you want to upload.'));

        List<Attachment> listToInsert = new List<Attachment>() ;
        
        //Attachment a = new Attachment(parentId = accid, name=myfile.name, body = myfile.body);
        for(Attachment a: allFileList)
        {
            if(a.name != '' && a.name != '' && a.body != null)
                listToInsert.add(new Attachment(parentId = '0019000000tiPjM', name = a.name, body = a.body)) ;
                
                //(OR) listToInsert.add(new Attachment(parentId = accId, name = a.name, body = a.body)) ;
        }
        
        //Inserting attachments
        if(listToInsert.size() > 0)
        {
            insert listToInsert ;
            ApexPages.addmessage(new ApexPages.message(ApexPages.Severity.INFO, listToInsert.size() + ' file(s) are uploaded successfully'));
            FileCount = '' ;
        }
        else
            ApexPages.addmessage(new ApexPages.message(ApexPages.Severity.ERROR,'Please select at-least one file'));
            
        return null;
    }
    public PageReference ChangeCount()
    {
        allFileList.clear() ;
        //Adding multiple attachments instance
        for(Integer i = 1 ; i <= Integer.valueOf(FileCount) ; i++)
            allFileList.add(new Attachment()) ;
        return null ;
    }

}

No comments:

Post a Comment