Setelah kita belajar mengirimkan data berupa text, sekarang kita akan membahas mengirimkan file menggunakan servlet dan attribute enctype="multipart/form-data". Untuk menggunakan attribute enctype hanya bisa digunakan dengan menggunakan HTTP Method POST selain itu juga untuk meng-upload file ada beberapa kondisi yaitu

  1. Servlet spec 3.1 or newer, bisa menggunakan native API
  2. Servlet spec < 3.1, ada issue untuk method getSubmittedFileName() karena method tersebut baru di perkenalkan di web server seperti Tomcat8, Jetty 9, WildFly 8, GlassFish 4
  3. Menggunakan Thirdparty lib seperty Apache Commons FileUpload.

Karena servlet spec yang kita gunakan masih menggunakan Tomcat7 sebagai development jadi kita akan menggunakan flow no 2.

Ok sekarang kita akan buat form seperti berikut:

design form

Berikut adalah file html nya, save di /src/main/webapp/example/request-file.html:

Untuk memproses file upload berikut adalah servlet nya:

dan hasilnya seperti berikut:

result

Dan berikut adalah lokasi filenya setelah di pindahkan:

file-saved