---------------------------------------------------------------------------------------------------------------------------------
VisualForce 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
-------------------------------------------------------------------------------------------------------------------------------------------
public 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)
{
//Initialize
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 = 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 ;
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Hi Rohit B
ReplyDeleteThis very interesting your solution I mention I'm investigating how to attach more than one file simultaneously in salesforce, you could support me
Greetings and thanks