Upload multiple attachments of your choice value selected from picklist
<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 ;
}
}
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: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