May 26, 2013

Image upload in ADF

In this post we will see how to upload images in Oracle ADF application.

 To upload a file don't forget to set UsesUpload property of form of jspx page to true.








Lets start with uploading a image/file from client to the server.
ADF rich faces provide the tag af:inputFile to allow uploading of data.
Define a variable Type UploadedFile and create its accessors

private UploadedFile _file;

public void setFile(UploadedFile _file) {
     this._file = _file;
}

public UploadedFile getFile() {
      return _file;
    }
And bind it with inputFile component's value property

<af:inputFile label="Upload Image" id="if1" value="#{ImageUploadBean.file}" />



 In this we will see 2 places where we can uploading image depending on our requirement :-
1.)In Database(BLOB) :-
In this part, we will see how to upload a image/file from the client to and store image in a blob column in a database.

We have used button action to upload file

Following are codes to upload Image in database blob column

    public String UploadImageAction() {
        UploadedFile myfile = this.getFile();
       
      
        if (myfile != null) {
           
            if (myfile.getContentType().equalsIgnoreCase("image/jpeg") ||                 myfile.getContentType().equalsIgnoreCase("image/png")  || myfile.getContentType().equalsIgnoreCase("image/gif")
                ){

                AppImageAMImpl am = (AppImageAMImpl)resolvElDC("AppImageAMDataControl");
                ViewObjectImpl v = am.getAppImgAdd();
                AppImgAddVORowImpl currRow = (AppImgAddVORowImpl)v.getCurrentRow();
                                                             
                try {
                   
                   
                    //to save image in Blob column in database directory..............

                                      
                    currRow.setImgBlob(createBlobDomain(getFile()));                                     


                } catch (Exception ex) {
                   
                }
            }
        }
        setFile(null);
        return null;
    }


    private BlobDomain createBlobDomain(UploadedFile file) {

        InputStream in = null;
        BlobDomain blobDomain = null;
        OutputStream out = null;

        try {
            in = file.getInputStream();

            blobDomain = new BlobDomain();
            out = blobDomain.getBinaryOutputStream();
            byte[] buffer = new byte[8192];
            int bytesRead = 0;

            while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
                out.write(buffer, 0, bytesRead);
            }

            in.close();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.fillInStackTrace();
        }

        return blobDomain;
    }

2.)In Actual path in server :-

 In this part, we will see how to upload a image/file from the client to actual location in server.

        public String UploadImageAction() {
        UploadedFile myfile = this.getFile();      
      
        if (myfile != null) {
           
            if (myfile.getContentType().equalsIgnoreCase("image/jpeg") ||  myfile.getContentType().equalsIgnoreCase("image/png")
                || myfile.getContentType().equalsIgnoreCase("image/gif")
                ){

                String path = "D:\\Images\\";

                 if(myfile.getContentType().equalsIgnoreCase("image/jpeg")){
                   
                    TypeVal=".jpeg";
                }
                else if(myfile.getContentType().equalsIgnoreCase("image/png")){
                    
                     TypeVal=".png";
                }
               
                else if( myfile.getContentType().equalsIgnoreCase("image/gif")){
                   
                    TypeVal=".gif";
                }
               
                AppItemImageAMImpl am = (AppItemImageAMImpl)resolvElDC("AppItemImageAMDataControl");
                ViewObjectImpl v = am.getAppItmImgAdd();
                AppItmImgAddVORowImpl currRow = (AppItmImgAddVORowImpl)v.getCurrentRow();

                String ImgId = currRow.getImgId();
               
                try {
                   
                    InputStream inputStream = myfile.getInputStream();
                    BufferedImage input = ImageIO.read(inputStream);

                    //to save image in another directory..............

                    File outputFile = new File(path + ImgId + TypeVal);
                    ImageIO.write(input,type, outputFile);                                     
                  
                } catch (Exception ex) {
                    // handle exception
                
                }
            }
        }
        setFile(null);
        return null;
    }



2 comments:

  1. Pls provide the info what to do after installing the oracle database xe 11g

    ReplyDelete
  2. Pls provide the info what to do after installing the oracle database xe 11g

    ReplyDelete