function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
DipakDipak 

Maximum view state size limit (128K) exceeded. Actual viewstate size for this page was 894.281K.B

Hi All

 

I have made a custom VF page to upload document. But when I tried to upload a  file of 1 MB or more , error shows to say
"Maximum view state size limit (135KB) exceeded. Actual view state size  for this page was 156.641KB".

 

I got some hints from forum, It didn't work for me

forum Link= http://boards.developerforce.com/t5/Visualforce-Development/Error-Maximum-view-state-size-limit-128K-exceeded-uh-oh/td-p/87434

 

I inspected the ViewStateSize on DevelopementMode's ViewState Tab

It shows more viewstate for "internal" node 

 

Below I am sending  my VF & Apex Code

 

VF Code:

-----------

<apex:page showHeader="false" standardController="Document" extensions="DocumentUploadController" >


<apex:messages />

<apex:outputPanel >

<apex:form >
<apex:pageBlock title="Doc Uploader" >
<table>
<tr>

<td>
<span>Select Folder</span>
</td>
<td>
<apex:selectList value="{!folderId}" size="1" style="width:200px;">
<apex:selectoptions value="{!folderList}"/>
</apex:selectList>
</td>

</tr>

<tr>

<td>
<span>Doc Title</span>
</td>
<td align="">
<apex:inputField value="{!Document.Name}" label="" style="width:400px;"/>

</td>

</tr>

<tr>

<td>
<span>Browse</span>
</td>
<td align="">
<apex:inputFile value="{!Document.body}" contentType="{!Document.ContentType}"/>

</td>

</tr>

</table>

</apex:pageBlock>
<div style="text-align: center">
<apex:commandButton value="Upload" action="{!save}" status="mystatus"/>
<apex:commandButton value="Close" onclick="window.close();" immediate="true"/>
<apex:actionStatus id="mystatus">
<apex:facet name="start">
<apex:outputPanel >Uploading.....
<apex:image value="/img/loading32.gif" style="height: 15px;"/>
</apex:outputPanel>
</apex:facet>
</apex:actionStatus>
</div>
</apex:form>
</apex:outputPanel>

<apex:outputPanel rendered="{!uploadFlg == true}">
<div style="text-align: center">
Uploaded Successfully<br />
<a href="{!DownloadLink}">Download Here</a>
Link : {!DownloadLink}
</div>
</apex:outputPanel>
</apex:page>

 

 

APEX Code:

-----------------

 

/**
* Apex Controller for Document Uploading for DB Version
**/

public class DocumentUploadController {

public ID folderId {get;set;}
public List<Selectoption> folderList {get;set;}
private ApexPages.StandardController ctlr;
public Boolean uploadFlg {get;set;}
public String targetId {get;set;}

public DocumentUploadController(ApexPages.StandardController controller){

this.ctlr = controller;
uploadFlg = false;
List<Folder> folders = [select Type, Name, Id, DeveloperName from Folder where Name != '' and AccessType = 'Public'];
folderList = new List<Selectoption>();

//Selecting folder for picklist in VF page
for(Folder folder:folders) {
if(folder.Name == null) continue;
SelectOption so = new SelectOption(folder.Id, folder.Name);
folderList.add(so);
}
System.debug('=======Folder ID to upload====='+System.currentPageReference().getParameters().get('fldrId'));

// setting current folder as default
if(System.currentPageReference().getParameters().get('fldrId') != NULL){

folderId = System.currentPageReference().getParameters().get('fldrId');
}

// setting 1st folder as default
else if(folderList.size() > 0) {
folderId = folderList[0].getValue();
}
}
/*****Method to handle Save functionality*******/
public PageReference Save(){

transient Document d = (Document) ctlr.getRecord();
d.FolderId = folderId;
d.IsPublic = true;
ctlr.save();
uploadFlg = true;
targetId = ctlr.getId();
d=NULL;
ctlr = NULL;
return null;
}

public String getDownloadLink() {

String url = '/servlet/servlet.FileDownload?file='+targetId;
return url;
}


}

 

Please help me..

Navatar_DbSupNavatar_DbSup

Hi,

Try the below code snippet as reference:

[1:43:47 PM] Vikas Gupta: /**

* Apex Controller for Document Uploading for DB Version

**/

public class DocumentUploadController {

public ID folderId {get;set;}

public List<Selectoption> folderList {get;set;}

transient public ApexPages.StandardController ctlr;

public Boolean uploadFlg {get;set;}

public String targetId {get;set;}

 

public DocumentUploadController(ApexPages.StandardController controller){

 

this.ctlr = controller;

uploadFlg = false;

List<Folder> folders = [select Type, Name, Id, DeveloperName from Folder where Name != '' and AccessType = 'Public'];

folderList = new List<Selectoption>();

 

//Selecting folder for picklist in VF page

for(Folder folder:folders) {

if(folder.Name == null) continue;

SelectOption so = new SelectOption(folder.Id, folder.Name);

folderList.add(so);

}

System.debug('=======Folder ID to upload====='+System.currentPageReference().getParameters().get('fldrId'));

 

// setting current folder as default

if(System.currentPageReference().getParameters().get('fldrId') != NULL){

 

folderId = System.currentPageReference().getParameters().get('fldrId');

}

 

// setting 1st folder as default

else if(folderList.size() > 0) {

folderId = folderList[0].getValue();

}

}

/*****Method to handle Save functionality*******/

public PageReference Save(){

 

transient Document d = (Document) ctlr.getRecord();

d.FolderId = folderId;

d.IsPublic = true;

ctlr.save();

uploadFlg = true;

targetId = ctlr.getId();

d.body=NULL; // chnage this

ctlr = NULL;

return null;

}

 

public String getDownloadLink() {

 

String url = '/servlet/servlet.FileDownload?file='+targetId;

return url;

}

 

 

}

 

Did this answer your question? If not, let me know what didn't work, or if so, please mark it solved. 

DipakDipak

Thanks for Reply,

 

 .No Result!!!, Same error is coming