Uploading and showing image file from absolute server path -Orace ADF

Sharing is Caring

This is another post about file handling in ADF. The previous post was about uploading and downloading any type of file from absolute server path. This post is specifically about handling image files, uploading an image file to server path and immediately showing image on the page using af:image component
See the previous post-
Uploading and downloading files from absolute server path in Oracle ADF (12.1.3)

So here I am using Jdev 12C (12.1.3), see step by step implementation

    • Create a fusion web application and a page in viewController


    • Now drop af:inputFile (to browse and select file), af:image (to show uploaded image) and a button to upload file



    • Bind af:inputFile value to managed bean variable, this variable is further used to read or write or process  file

//To Store Value of selected file
private UploadedFile imageFile;

public void setImageFile(UploadedFile imageFile) {
this.imageFile = imageFile;

public UploadedFile getImageFile() {
return imageFile;
    • Now see Managed Bean method to upload image file to absolute server path

Bean Method to Upload File-

//To Store path of uploaded Image file
String imagePath = null;

public void setImagePath(String imagePath) {
this.imagePath = imagePath;

public String getImagePath() {
return imagePath;

/**Method to upload image file to absolute server path*/
private String uploadImage(UploadedFile file) {

UploadedFile myfile = file;

if (myfile == null) {

} else {
if (myfile.getContentType().equalsIgnoreCase("image/jpeg") ||
myfile.getContentType().equalsIgnoreCase("image/png") ||
myfile.getContentType().equalsIgnoreCase("image/bmp") ||
myfile.getContentType().equalsIgnoreCase("image/gif")) {

//Path of folder on drive
String path = "D://ADF//";
String type = "PNG";
String TypeVal = ".png";
if (myfile.getContentType().equalsIgnoreCase("image/jpeg")) {
type = "JPEG";
TypeVal = ".jpeg";
} else if (myfile.getContentType().equalsIgnoreCase("image/png")) {
type = "PNG";
TypeVal = ".png";
} else if (myfile.getContentType().equalsIgnoreCase("image/bmp")) {
type = "PNG";
TypeVal = ".png";
} else if (myfile.getContentType().equalsIgnoreCase("image/gif")) {
type = "GIF";
TypeVal = ".gif";

InputStream inputStream = null;
try {
//Generate a unique name for uploaded image with date time
DateFormat dateFormat = new SimpleDateFormat("yyMMdd_HHmmss");
Date date = new Date();
String dtTime = dateFormat.format(date);
dtTime = dtTime.replace(" ", "_");

String name = "IMG" + "_" + dtTime;
System.out.println("File name is-" + name);
inputStream = myfile.getInputStream();
BufferedImage input = ImageIO.read(inputStream);

//Writing file to path
File outputFile = new File(path + name + TypeVal);
ImageIO.write(input, type, outputFile);
imagePath = outputFile.getAbsolutePath();

} catch (Exception ex) {
// handle exception
} finally {
try {
} catch (IOException e) {
} else {
imagePath = "NO";
return imagePath;

ActionListener of Upload Button-

    /**Action Listener to Upload image File
     * @param actionEvent
   public void uploadImageFileAction(ActionEvent actionEvent) {
       File directory = new File("D://ADF//");
       //get all the files from a directory
       File[] fList = directory.listFiles();
       for (File file : fList) {
           //Delete all previously uploaded files
           if (!"NoImage.png".equalsIgnoreCase(file.getName())) {
//Upload Currently Selected File
String flag = uploadImage(imageFile);

if ("NO".equalsIgnoreCase(flag)) {
FacesMessage msg =
new FacesMessage("This is not an Image file, Please upload supported file type (.jpg,.png etc)");
FacesContext.getCurrentInstance().addMessage(null, msg);


    • set usesUpload to true for af:form component on the page to support file upload



    • Now upload part is complete, next is to show uploaded image on the page. So to do this create a servlet (this will process image file into bytes and then show using af:image component)




    • See Servlet code and how it is mapped with af:image component

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ViewImageServlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";

public void init(ServletConfig config) throws ServletException {

 * @param request
 * @param response
 * @throws ServletException
 * @throws IOException
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = (request.getParameter("path"));

OutputStream os = response.getOutputStream();
//If path is null or file is not an image
if (path.equalsIgnoreCase("No")) {
path = "D:\ADF\NoImage.png";
if (request.getParameter("path") == "") {
path = "D:\ADF\NoImage.png";
InputStream inputStream = null;

try {
File outputFile = new File(path);
inputStream = new FileInputStream(outputFile);
BufferedInputStream in = new BufferedInputStream(inputStream);
int b;
byte[] buffer = new byte[10240];
while ((b = in.read(buffer, 0, 10240)) != -1) {
os.write(buffer, 0, b);

} catch (Exception e) {

} finally {
if (os != null) {
if (inputStream != null) {





  • Now run this application and check this (All uploaded files will be stored in D://ADF path)
Select an image and click upload (Image is immediately reflected on the page)

Check inside D://ADF folder, the image file is uploaded there with a new name

Again upload another image-

showing image

Check that previous file is deleted from the folder and current one is there-

Happy Learning 🙂

Related Posts

0 thoughts on “Uploading and showing image file from absolute server path -Orace ADF”

Leave a Reply

Your email address will not be published. Required fields are marked *