You need to sign in to do that
Don't have an account?
How to repeat the form for uploading a file
Hii all,
I am looking for vf for uploading a file ..I tried and it worked fine but my rquirement is that i had to take 5 pageblock sections in that each page block section i had to upload a single file my code works fine for one page block section for another it didn't work fine can u guide me the r8 solution
I had also tried with repeat tag by making row="5".. but it didn't work for me ..I'm pasting the code i tried
Vf page
------------------------------------------------------------------------------------------------------------------------------------------
<apex:page Controller="sub_FileUploadController" sidebar="false" >
<apex:repeat value="{!userfiledescription}">
<apex:form id="apexform">
<table border="1">
<tr>
<td>
<apex:outputLabel value=""/>
<apex:commandButton onclick="getFileType()" oncomplete="completedfunction();" action="{!page2onLoad}" id="cmdUpload1" value="Upload File">
<apex:commandButton action="{!cancel}" value="Cancel"/>
<apex:commandButton action="{!page2onLoad1}" value="Add More"/>
</apex:commandButton>
</td></tr>
<tr><td>
<apex:outputLabel value="File Description"/></td>
<td>
<apex:inputtext id="ufdescription" value="{!userfiledescription}" />
</td>
</tr>
</table>
<!--Div Code used to display Progress bar image -->
<div id="display1" width="350">
</div>
<apex:inputhidden id="filetypehidden" value="{!filetype}"/>
<apex:inputhidden id="filesizehidden" value="{!filesize}"/>
<apex:inputhidden id="filenamehidden" value="{!filenamehidden}"/>
<input type="hidden" id="submithidden" value="false"/>
<script type="text/javascript">
function getFileType()
{
try
{
var filetype;
var filename;
var filesizeF;
filetype=document.forms['submitform'].elements['file'].value;
document.getElementById('j_id0:apexform:filenamehidden').value=filetype;
filetype=filetype.substring(filetype.indexOf('.',0)+1,filetype.length);
document.getElementById('j_id0:apexform:filetypehidden').value=filetype;
filename=document.forms['submitform'].elements['key'];
if(filetype!='' || filetype!=null)
{
filename.value=filename.value + '.' + filetype;
}
if(navigator.appName!='Microsoft Internet Explorer')
{
try
{
filesizeF=document.forms['submitform'].elements['file'];
<!-- alert(filesizeF.files[0].fileSize);-->
document.getElementById('j_id0:apexform:filesizehidden').value=filesizeF.files[0].fileSize;
//document.getElementById('j_id0:apexform:filesizehidden').value=0;
}
catch(errr)
{
}
}
else
{
document.getElementById('j_id0:apexform:filesizehidden').value=0;
}
if(document.getElementById('j_id0:apexform:filesizehidden').value!=0 && document.getElementById('j_id0:apexform:filesizehidden').value!='undefined' && document.getElementById('j_id0:apexform:filenamehidden').value!=undefined) {
document.getElementById('submithidden').value='true';
return true;
}
else
{
alert('Unable to capture file details..');
document.getElementById('submithidden').value='false';
return false;
}
}
catch(err)
{
alert(err);
return false;
}
}
function completedfunction()
{
try
{
if(document.getElementById('submithidden').value=='true')
{
<!--Code to display Progress bar image -->
var html = '';
html += '<img src="/resource/1323008320000/LoadingImage">';
html += '</img>'
document.getElementById('display1').innerHTML = html;
<!--Code to display Progress bar image end -->
document.forms['submitform'].submit();
} }
catch(err)
{
alert(err);
}
}
</script>
</apex:form>
</apex:repeat>
<form id="submitform"
action="https://s3.amazonaws.com/{!BucketName}"
method="post" enctype="multipart/form-data">
<input type="hidden" name="AWSAccessKeyId" value="{!key}"/>
<input type="hidden" name="policy" value="{!policy}"/>
<input type="hidden" name="signature" value="{!signedPolicy}"/>
<!-- <input type="hidden" name="success_action_redirect" value="https://{!serverURL}/{!AcctID}" /> -->
<input type="hidden" value="{!Filename}" name="key"/>
<apex:outputLabel value="File to upload"/>
<input id="fileid" type="file" size="50" name="file"/>
</form>
</apex:page>
------------------------------------------------------------------------------------------------------------------------------------------------------------
Apex Code
public class sub_FileUploadController{
/*
public PageReference Deletefile() {
DeleteObjectRequest request = new DeleteObjectRequest();
BucketName = bucketName;
Key = FileKey;
S3Response response = s3Client.DeleteObject(request);
return null;
}
*/
public PageReference cancel() {
//string queryChild='SELECT Id,parent__c FROM '+ childName + 'Whereid=:' + AcctId + 'LIMIT 1' ;
// SObject childObject= Database.query(queryChild)[0].getSObjectType().newSObject();
Account_Documents__c A = [SELECT id,parent__c from Account_Documents__c where id=:AcctID];
delete a;
return new PageReference('/'+a.parent__c +'/d?retURL=%2F'+ a.parent__c);
//delete childObject;
//return null;
}
public string secret {get;set;}
public string key { get ;set; }
public string BucketName{get;set;}
public string BucketName1{get;set;}
public String serverURL {get;set;}
public String AcctID {get;set;}
public String AcctID1 {get;set;}
public String userFileName{get;set;}
public String userFileDescription{get;set;}
public String userFileDescription1{get;set;}
public String filenamehidden{get;set;}
public string Filename{get;set;}
public string fileType{get;set;}
public Boolean onemore{get;set;}
public Decimal fileSize{get;set;}
//private String AWSCredentialName = 'tvarana7';
//Variable for 2nd form(apexform1)
public string fileType1{get;set;}
public Decimal fileSize1{get;set;}
public String filenamehidden1{get;set;}
public string Filename1{get;set;}
string filedescriptionAPI1;
string filetypeAPI1;
string filesizeinbytesAPI1;
String filenameAPI1;
string filedescriptionAPI;
string filetypeAPI;
string filesizeinbytesAPI;
String filenameAPI;
datetime expire = system.now().addMinutes(40);
String formattedexpire = expire.formatGmt('yyyy-MM-dd')+'T'+
expire.formatGmt('HH:mm:ss')+'.'+expire.formatGMT('SSS')+'Z';
string policy { get {return
'{ "expiration": "'+formattedexpire+'","conditions": [ {"bucket": "'+ BucketName+'" } ,'+
// { "acl": "'+ record.Access__c +'" },'+ '{"success_action_status": "201" },'+ '{"content-type":"'+record.Content_Type__c+'"},'+
// '{"success_action_redirect": "https://'+serverurl+'/'+AcctID+'"},' +
'["starts-with", "$key", ""] ]}'; } }
public sub_FileUploadController()
{
secret='bXrMni3+SWcWU60QDDI37hNjllWCY3syswO0EFbF';
key='AKIAIO55ACM6IO2EACFQ';
BucketName='SUBHASH';
BucketName1='tvarana7';
onemore= False;
}
public String getPolicy() {
return EncodingUtil.base64Encode(Blob.valueOf(policy));
}
public String getSignedPolicy() {
return make_sig(EncodingUtil.base64Encode(Blob.valueOf(policy)),secret);
}
//tester
public String getHexPolicy() {
String p = getPolicy();
return EncodingUtil.convertToHex(Blob.valueOf(p));
}
private String make_sig(string canonicalBuffer,string secret) {
String macUrl ;
String signingKey = EncodingUtil.base64Encode(Blob.valueOf(secret));
Blob mac = Crypto.generateMac('HMacSHA1',blob.valueof(canonicalBuffer),blob.valueof(secret));
macUrl = EncodingUtil.base64Encode(mac);
return macUrl;
}
public String bucketToList {get;set;}
private String ChildName;
public void page2onLoad()
{
system.debug('ACCTID:'+AcctID);
if(AcctID==null || AcctID=='')
{
string parentID=ApexPages.currentpage().getparameters().get('id');
string parentName=ApexPages.currentpage().getparameters().get('ParentObjecName');
parentName=parentName.replace('\'','');
string parentQuery='SELECT Id FROM '+ parentName + ' where id=\'' + parentID +'\'';
System.debug('PARENT QUERY:'+parentQuery);
SObject ParentObject=Database.query(parentQuery)[0];
System.debug('ParentObjectID:' + ParentObject.Id);
ChildName=ApexPages.currentpage().getparameters().get('ChildObjectName');
ChildName=ChildName.replace('\'','');
string queryChild='SELECT Id FROM '+ childName +' LIMIT 1';
string parentRef=ApexPages.currentpage().getparameters().get('ParentRefName');
parentRef=parentRef.replace('\'','');
SObject childObject= Database.query(queryChild)[0].getSObjectType().newSObject();
childObject.put(parentRef,ParentObject.id);
insert childObject;
system.debug('ChildObjectID:' + childObject.id);
AcctID=childObject.Id;
serverURL =ApexPages.currentpage().getparameters().get('serverURL');
serverURL =serverURL.replace('\'','');
String urlDomain = serverURL.substring(serverURL.indexOf('://')+3,serverURL.indexOf('/services'));
serverURL = urlDomain;
Filename=childObject.id;
filedescriptionAPI=Apexpages.currentpage().getparameters().get('FILEDESCRIPTIONAPI');
filetypeAPI=Apexpages.currentpage().getparameters().get('FILETYPEAPI');
filesizeinbytesAPI=Apexpages.currentpage().getparameters().get('FILESIZEINBYTESAPI');
filenameAPI=Apexpages.currentpage().getparameters().get('FILENAMEAPI');
}
else
{
String selectfields;
if(filedescriptionAPI!='' && filedescriptionAPI!=null){
selectfields=filedescriptionAPI;}
if(filetypeAPI!='' && filetypeAPI!=null){
if(selectfields!='' && selectfields!=null){
selectfields=selectfields + ',' + filetypeAPI;}
else{
selectfields=filetypeAPI;}
}
if(filesizeinbytesAPI!=null && filesizeinbytesAPI!=''){
if(selectfields!='' && selectfields!=null){
selectfields=selectfields + ',' + filesizeinbytesAPI;}
else{
selectfields=filesizeinbytesAPI;}
}
if(filenameAPI!='null' && filenameAPI!=''){
if(selectfields!='' && selectfields!=null){
selectfields=selectfields + ',' + filenameAPI;}
else{
selectfields=filenameAPI;}
}
if(selectfields!=null && selectfields!=''){
selectfields=selectfields.replace('\'',''); }
system.debug('filenameapi:' + filenameAPI);
system.debug('thequery:' + 'select id,'+ selectfields +' from ' + ChildName + ' where id=\'' + AcctID + '\'');
SObject childObject;
if(selectfields!='' && selectfields!=null){
childObject=Database.query('select id,'+ selectfields +' from ' + ChildName + ' where id=\'' + AcctID + '\'')[0];}
else{
childObject=Database.query('select id from ' + ChildName + ' where id=\'' + AcctID + '\'')[0];}
if(filenameAPI!='' && filenameAPI!='null'){
filenameAPI=filenameAPI.replace('\'','');
childObject.put(filenameAPI,userFileName);}
if(filedescriptionAPI!='' && filedescriptionAPI!='null'){
filedescriptionAPI=filedescriptionAPI.replace('\'','');
childObject.put(filedescriptionAPI,userFileDescription);}
if(filetypeAPI!='' && filetypeAPI!='null'){
filetypeAPI=filetypeAPI.replace('\'','');
childObject.put(filetypeAPI,filetype);}
if(filesizeinbytesAPI!='null' && filesizeinbytesAPI!=''){
filesizeinbytesAPI=filesizeinbytesAPI.replace('\'','');
childObject.put(filesizeinbytesAPI,(decimal)((fileSize)));}
system.debug('........................filesizeinbytesAPI fileSize........................'+fileSize);
update childObject;
}
}
//second method
public void page2onLoad1(){
onemore=True;
system.debug('ACCTID1:'+AcctID1);
if(AcctID1==null || AcctID1=='')
{
string parentID=ApexPages.currentpage().getparameters().get('id');
string parentName=ApexPages.currentpage().getparameters().get('ParentObjecName');
parentName=parentName.replace('\'','');
string parentQuery='SELECT Id FROM '+ parentName + ' where id=\'' + parentID +'\'';
System.debug('PARENT QUERY:'+parentQuery);
SObject ParentObject=Database.query(parentQuery)[0];
System.debug('ParentObjectID:' + ParentObject.Id);
ChildName=ApexPages.currentpage().getparameters().get('ChildObjectName');
ChildName=ChildName.replace('\'','');
string queryChild='SELECT Id FROM '+ childName +' LIMIT 1';
string parentRef=ApexPages.currentpage().getparameters().get('ParentRefName');
parentRef=parentRef.replace('\'','');
SObject childObject= Database.query(queryChild)[0].getSObjectType().newSObject();
childObject.put(parentRef,ParentObject.id);
insert childObject;
system.debug('ChildObjectID:' + childObject.id);
AcctID1=childObject.Id;
serverURL =ApexPages.currentpage().getparameters().get('serverURL');
serverURL =serverURL.replace('\'','');
String urlDomain = serverURL.substring(serverURL.indexOf('://')+3,serverURL.indexOf('/services'));
serverURL = urlDomain;
Filename1=childObject.id;
filedescriptionAPI1=Apexpages.currentpage().getparameters().get('FILEDESCRIPTIONAPI');
filetypeAPI1=Apexpages.currentpage().getparameters().get('FILETYPEAPI');
filesizeinbytesAPI1=Apexpages.currentpage().getparameters().get('FILESIZEINBYTESAPI');
filenameAPI1=Apexpages.currentpage().getparameters().get('FILENAMEAPI');
// }
// else
// {
String selectfields;
if(filedescriptionAPI1!='' && filedescriptionAPI1!=null){
selectfields=filedescriptionAPI1;}
if(filetypeAPI1!='' && filetypeAPI1!=null){
if(selectfields!='' && selectfields!=null){
selectfields=selectfields + ',' + filetypeAPI1;}
else{
selectfields=filetypeAPI1;}
}
if(filesizeinbytesAPI1!=null && filesizeinbytesAPI1!=''){
if(selectfields!='' && selectfields!=null){
selectfields=selectfields + ',' + filesizeinbytesAPI1;}
else{
selectfields=filesizeinbytesAPI1;}
}
if(filenameAPI1!='null' && filenameAPI1!=''){
if(selectfields!='' && selectfields!=null){
selectfields=selectfields + ',' + filenameAPI1;}
else{
selectfields=filenameAPI1;}
}
if(selectfields!=null && selectfields!=''){
selectfields=selectfields.replace('\'',''); }
system.debug('filenameapi:' + filenameAPI1);
system.debug('thequery:' + 'select id,'+ selectfields +' from ' + ChildName + ' where id=\'' + AcctID1 + '\'');
// SObject childObject;
if(selectfields!='' && selectfields!=null){
childObject=Database.query('select id,'+ selectfields +' from ' + ChildName + ' where id=\'' + AcctID1 + '\'')[0];
}
else{
childObject=Database.query('select id from ' + ChildName + ' where id=\'' + AcctID1 + '\'')[0];}
if(filenameAPI1!='' && filenameAPI1!='null'){
filenameAPI1=filenameAPI1.replace('\'','');
childObject.put(filenameAPI1,userFileName);}
if(filedescriptionAPI1!='' && filedescriptionAPI1!='null'){
filedescriptionAPI1=filedescriptionAPI1.replace('\'','');
childObject.put(filedescriptionAPI1,userFileDescription1);}
if(filetypeAPI1!='' && filetypeAPI1!='null'){
filetypeAPI1=filetypeAPI1.replace('\'','');
childObject.put(filetypeAPI1,filetype1);}
if(filesizeinbytesAPI1!='null' && filesizeinbytesAPI1!=''){
filesizeinbytesAPI1=filesizeinbytesAPI1.replace('\'','');
childObject.put(filesizeinbytesAPI1,(decimal)((fileSize1)));}
system.debug('........................filesizeinbytesAPI1 fileSize1........................'+fileSize1);
update childObject;
}
}
//second method end
public static testmethod void testuplod(){
PageReference pageRef = Page.sub_FileUpload;
Account a=new Account();
a.name='Test';
insert a;
pageRef.getParameters().put('id',a.id);
pageRef.getParameters().put('ParentObjecName','Account');
pageRef.getParameters().put('ChildObjectName','tva__Account_documents__c');
pageRef.getParameters().put('ParentRefName','tva__Parent__c');
pageRef.getParameters().put('serverURL','https://na12.salesforce.com/services/Soap/c/12.0/00DU0000000Hg3A');
pageRef.getParameters().put('FILETYPEAPI','tva__file_type__c');
pageRef.getParameters().put('FILEDESCRIPTIONAPI','tva__file_description__c');
pageRef.getParameters().put('FILESIZEINBYTESAPI','tva__File_Size_in_Bytes__c');
pageRef.getParameters().put('FILENAMEAPI','tva__file_name__c');
sub_FileUploadController fp = new sub_FileUploadController();
Test.setCurrentPage(pageRef);
System.debug(fp.Policy);
System.debug(fp.getSignedPolicy());
System.debug(fp.getHexPolicy());
fp.page2onLoad();
fp.filesize=100000;
fp.page2onLoad();
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------
Hope i'll get a solution for this
Thanks in Advance
Hi,
You can try below code
upload the pelase wait image staticresorce with the name Load
Did this answer your question? If not, let me know what didn't work, or if so, please mark it solved.