Kamis, 07 Maret 2013

JSP Untuk Mengupload Gambar, Upload File Dokumen Binary dengan Java Server Pages

Kali ini kita pelajari cara mengupload gambar atau dokumen berbentuk file binary dengan JSP (Java Server Pages). Hal ini penulis lakukan karena pada tutorial sebelumnya ternyata banyak bug atau kesalahannya jika tidak dijalankan atau dideploy di Tomcat. Pada tutorial tersebut jika masih dijalankan di NetBeans kebanyakan tidak berfungsi.

Kali ini kita pakai cara yang lain yaitu menggunakan library milik com.oreilly.servlet yang dapat didownload di  http://www.jarfinder.com/index.php/jars/versionInfo/38510 atau di http://www.servlets.com/cos/.

Langkah pertama buat project JSP di NetBeans, kemudian masukkan library cos-09May2002.jar atau versi lain yang anda dapatkan. Kemudian buat halaman berikut untuk memilih gambar :

form.jsp


<%--
    http://cariprogram.blogspot.com
    nuramijaya@gmail.com
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Upload Gambar</h1>
        <%
              String kode = "111";
        %>
        <form action="upload.jsp" method="post" enctype="multipart/form-data">
            Kode 
            <input type="text" name="kode" value="<%= kode%>"/><br/>
            Foto
            <input type="file" name="foto"/><br/>
            <input type="submit" value="Upload"/>
        </form>
    </body>
</html>


Setelah itu buat halaman berikut ini untuk memproses upload fila gambar atau file biner tersebut :

upload.jsp


<%--
    http://cariprogram.blogspot.com
    nuramijaya@gmail.com
--%>

<HTML>
<HEAD>
<TITLE>Proses Simpan Foto</TITLE>
</HEAD>
<BODY>
<%@page import="java.io.*,
               com.oreilly.servlet.*,
               com.oreilly.servlet.multipart.*" %>

<%
   String kode = ""; // Parameter

   boolean ada_kesalahan = false;

   MultipartParser mr = null;
   try {
      mr = new
         MultipartParser(request,10000000);
   }
   catch (IOException i) {
      ada_kesalahan = true;
   }

   if (!ada_kesalahan) { 
      com.oreilly.servlet.multipart.Part fp = mr.readNextPart();
      while (fp != null) {
         if (fp.isFile()) {
// Proses upload gambar

            String namaBerkas =
               ((FilePart)fp).getFileName();

            if (namaBerkas!= null &&
               namaBerkas.length()>0) {
                  String namaBaru=
                     getServletContext().getRealPath("\\") +
                     "\\images\\" +
                     kode.toLowerCase() + ".jpg";

               File berkas = new File(namaBaru);

               if ( ((FilePart)fp).writeTo(berkas) > 0)
                  out.println("Gambar telah disimpan<BR>");
               else
                  out.println("Gambar gagal disimpan<BR>");
            }
         }
         else {
            // Ambil nilai parameter
// Bisa sekalian kode program untuk menyimpan data ke database diletakkan disini

            String namaParam = fp.getName();
            if (namaParam.equals( "kode"))
               kode =
                  ((ParamPart)fp).getStringValue();
         }

         fp = mr.readNextPart();
      }
   }
%>
</BODY>
</HTML>


Project beserta library dapat didownload disini.

Pada Google Docs klik File - Download.

Semoga berhasil :)