Monday, January 2, 2012

Insert Document in Attachment Object using Visualforce and Apex Class

Apex Class :
//insertAttachment
public with sharing class insertAttachment {
    public blob attachVal {get; set;}
    public string attachName {get; set;}
    public Id AttachId;
   
    public insertAttachment() {
        AttachId = ApexPages.CurrentPage().getParameters().get('Id');
    }
   
    public PageReference insertNewFile() {
        try {
            delete [select Id from attachment where ParentId =: AttachId ];
            Blob b = attachVal;
            Attachment at = new Attachment(Name=attachName, body=b, ParentId=AttachId);
            insert at;           
        } catch(Exception e){ }
        return null;
    }
   
    public List<attachment> getAttachmentList() {
        List<attachment> attachList = new List<attachment>();
       if(AttachId != null) {
            string attachQry = 'Select Id, Name, Body, ParentId from Attachment where ParentId =: AttachId';
            attachList = (List<Attachment>) Database.query(attachQry);
        }
        return attachList;
    }
}
VisualForce Page:
<apex:page controller="insertAttachment">
  <apex:form >
      <apex:pageBlock >
          <apex:pageBlockButtons >
              <apex:commandButton value="Attach New File" action="{!insertNewFile}"/>
          </apex:pageBlockButtons>
          <apex:pageBlockSection >
              <apex:inputFile value="{!attachVal}" fileName="{!attachName}"></apex:inputFile>
          </apex:pageBlockSection>
      </apex:pageBlock>
      <apex:outputPanel >
      <apex:pageBlock title="Attach File List">
      <apex:repeat value="{!AttachmentList}" var="a">
          <a href="{!URLFOR($Action.Attachment.Download, a.Id)}">{!a.Name}</a> <br />
      </apex:repeat>
      </apex:pageBlock>
      </apex:outputPanel>
  </apex:form>
</apex:page>

No comments:

Post a Comment