Upload File di Java Servlet

Pada aplikasi berbasis web, terkadang saya perlu mendapatkan input dari user berupa file yang harus ia upload melalui web. Bagaimana melakukannya di aplikasi berbasis Java? Panduan singkat ini akan menerangkannya.

Saya menggunakan servlet sebagai basis aplikasinya — sebenarnya tidak penting kita memakai basisnya, bisa servlet, bisa JSP biasa, atau struts, spring, JSF, whatever lah. Kemudian, saya akan menggunakan library Apache Software Foundation sebagai bantuan. Library yang akan kita perlukan adalah Jakarta Commons File Upload dan Jakarta Commons IO. Silakan download rilis terbaru dari kedua situs tersebut dan masukkan dalam CLASSPATH / library aplikasi web Anda.

Kemudian, langkah selanjutnya sederhana, menulis code. Pertama adalah menulis form yang akan diberikan kepada user, jangan lupa tipe form-nya adalah multipart/form-data. Kemudian lemparkan form tersebut pada servlet pemroses. Pada servlet pemroses itu, olah file yang diupload dengan class-class milik Jakarta Commons. Paling sederhana seperti di bawah ini:



FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload( factory );

try {

List items = upload.parseRequest( request );

Iterator it = items.iterator();

if( it.hasNext() ) {

DiskFileItem item = ( DiskFileItem ) it.next();

if( item.isFormField() ) {

processForm( item );

}

else {

processFileUpload( item );

}

}

}

catch( FileUploadException e ) {

e.printStackTrace();

}



Dua baris teratas, objek FileItemFactory dan ServletFileUpload adalah dua objek yang dibuat untuk mempersiapkan penangkapan file yang diupload. Kemudian, method parseRequest membaca setiap input form yang dikirimkan tidak hanya input yang tipe-nya file saja. Itulah sebabnya, baris berikutnya adalah blok percabangan yang jika tipe input form adalah file atau jika bukan file atau hanya form field biasa.

Method processFileUpload berisi proses yang mengurusi file yang telah diupload lebih lanjut. Objek yang memegang file yang diupload tersebut adalah DiskFileItem. Objek ini memiliki method-method yang sangat berguna seperti misalnya,



String fieldName = item.getFieldName(); <-- mendapatkan nama input form
String fileName = item.getName(); <-- mendapatkan nama file
String contentType = item.getContentType(); <-- mendapatkan tipe file
boolean isInMemory = item.isInMemory(); <-- mendapatkan status
long sizeInBytes = item.getSize(); <-- mendapatkan ukuran file

Simple, sederhana saja. Terima kasih untuk Apache Software Foundation yang telah membuat library yang sangat berguna ini. Have a happy coding!

By Galih Satriaji

Bookaholic, Workaholic. Chubby. That's me!

3 comments

  1. kalo upload pake java biasa gimana caranya mas? bisa minta source codenya sama tutorial pemakaian. mohon bantuannya dan mohon dikirim melalui email.Thank’s

  2. mas boleh mintak tolong…?
    saya pake php upload ke server kok gagal terus, bagaimana caranya upload pake java..?
    punya source code nya ga..?
    boleh mintak penjelasan…! kalo ada mohon dikirim via email.
    atas bantuanya saya haturkan terimaksaih

    G. Raka

Leave a comment

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