Pengunggah File Java Sederhana Tanpa Ketergantungan

Diterbitkan: 2023-01-06

Salah satu persyaratan mendasar dari aplikasi web dan situs web kontemporer adalah kemampuan untuk mengunggah file, seperti dokumen, foto, dan video. Misalnya, pengguna dapat mempublikasikan video dan gambar di platform jejaring sosial seperti Instagram.

Menerapkan dan mengelola prosedur pengunggahan file sebelumnya merupakan tugas yang sulit. Untungnya, pengunggahan file menjadi lebih sederhana sebagai hasil dari kemajuan teknologi online. Misalnya, pengunggah file Java membuat pengunggahan file menjadi cepat dan nyaman.

Namun, melalui pengunggahan file, penjahat dunia maya dapat memasukkan malware atau konten berbahaya lainnya ke komputer Anda dan merusak server. Oleh karena itu, pengembang harus benar-benar memastikan bahwa pengunggahan file di situs web atau aplikasi web mereka aman. Untuk melakukan pengunggahan file yang aman, kami sarankan Anda menggunakan SDK pengunggahan file Java yang andal.

Kami akan membahas cara menggunakan Java untuk membuat pengunggah file di artikel ini.

Bagaimana Menerapkan Pengunggah File Menggunakan Java?

Pengunggah file tidak lebih dari "kirim" yang dapat diklik pengguna untuk mengunggah file ke aplikasi web atau situs web. Namun, pengunggah file jauh lebih berarti bagi pengembang.

Kami dapat membuat pengunggah file sederhana di mana kami hanya menggunakan formulir HTML dan servlet. Dalam contoh kita, form HTML akan memiliki dua field input. Satu kolom input memungkinkan pengguna untuk mengunggah filenya dan kolom input kedua memungkinkan pengembang memberi tahu kami di mana kami harus menyimpan file tersebut.

Kami menuntut metode POST untuk mengirimkan data formulir ini termasuk file ke server. Selain itu, saat kami mengunggah file, kami menggunakan encrypt=”multipart/form-data” karena file berisi banyak karakter yang tidak dapat dicetak.

Servlet mengelola permintaan POST dan mengekstrak File dari aliran setelah memproses data file yang masuk. Tujuan menentukan lokasi di sistem tempat File harus disimpan. Saat kita menekan tombol Unggah, data dikirimkan ke servlet, yang kemudian menyimpan File di lokasi yang ditentukan.

Membuat file HTML dengan kolom input

Sebelum kita mulai, buat file index.html untuk mengikuti.

index.html harus memiliki kode berikut:

<!DOCTYPE html>
<html lang=”en”>
<kepala>
<title>Pengunggah Berkas Java</title>
<meta http-equiv=”Content-Type” content=”teks/html; charset=UTF-8″>
</kepala>
<tubuh>
<form method=”POST” action=”upload” enctype=”multipart/form-data” >
Mengajukan:
<input type=”file” name=”java-file” id=”java-file” /> <br/>
Tujuan:
<input type=”text” value=”/java-folder” name=”destination”/>
</br>
<input type=”submit” value=”Submit” name=”submit” id=”submit” />
</bentuk>
</tubuh>
</html>

Seperti inilah halaman Anda seharusnya:

Menangani pemrosesan file di sisi server

Untuk menuliskan kode servlet, kita akan membuat file bernama FileUploadServlet.java. Serlet menggunakan anotasi untuk mendefinisikan komponen dan metadata. Jadi anotasi @WebServlet digunakan untuk mendefinisikan komponen servlet di Java.

Anotasi servlet harus mengatakan HttpServlet mana yang harus dijalankan untuk URL mana. Untuk itu, kami mendefinisikan parameter name dan ulrPattern di anotasi @WebServlet kami. Perhatikan bahwa, ketika kami mengirimkan formulir kami, kami akan mengarahkan ulang ke /upload url tempat Kelas FileUploadServlet akan dieksekusi.

Anotasi @MultipartConfig memberi tahu servlet bahwa ia akan menerima multipart/form-data dalam tipe MIME.

Mari tulis kode lengkap kita sekarang.

@WebServlet(nama = “FileUploadServlet” , urlPatterns = { “/unggah” })
@MultipartConfig
FileUploadServlet kelas publik memperluas HttpServlet {

LOGGER Logger statis akhir pribadi =
Logger.getLogger(FileUploadServlet.class.getCanonicalName());

proses void yang dilindungiRequest (permintaan HttpServletRequest,
respons HttpServletResponse)
melempar ServletException, IOException {
response.setContentType( “text/html;charset=UTF-8” );

String akhir tujuan= request.getParameter( “tujuan” );
Bagian akhir bagian = request.getPart( “file” );
String akhir nameOfFile = getFileName(bagian);

OutputStream keluar = null ;
InputStream cont = null ;
printWriter akhir printWriter = response.getWriter();

coba {
keluar = FileOutputStream baru( File baru (dest + File.separator
+ namaFile));
cont = part.getInputStream();

int pembaca = 0 ;
byte akhir[] byte = byte baru [ 1024 ];

while ((pembaca = cont.read(byte)) != -1 ) {
keluar.tulis(byte, 0 , pembaca);
}
printWriter.println( “File “ + namaFile + ” dibuat di “ + tujuan);
LOGGER.log(Level.INFO, “Berkas{0} diunggah ke {1}” ,
Objek baru []{namaBerkas, tujuan});
} catch (FileNotFoundException fne) {
printWriter.println( “Anda tidak menyebutkan nama file atau “
+ "mencoba mengunggah file ke yang tidak ada"
+ "lokasi." );
printWriter.println( “<br/> ERROR: “ + fne.getMessage());

LOGGER.log(Level.SEVERE, “Kesalahan saat mengunggah file. Kesalahan: {0}” ,
Objek baru []{fne.getMessage()});
} akhirnya {
jika (keluar != null ) {
keluar.tutup();
}
jika (lanjutan != null ) {
lanjutan.tutup();
}
if (printWriter != null ) {
printWriter.close();
}
}
}

private String getFileName(bagian akhir bagian) {
String akhir partHeader = part.getHeader( “konten-disposisi” );
LOGGER.log(Level.INFO, “Bagian Header = {0}” , partHeader);
untuk (Konten string : part.getHeader( “konten-disposisi” ).split( “;” )) {
if (content.trim().startsWith( “nama file” )) {
kembalikan konten.substring(
content.indexOf( '=' ) + 1 .trim().replace( “\”” , “” );
}
}
kembali nol ;
}
}

Metode processRequest memanggil metode getFileName untuk mendapatkan nama file dari bagian file setelah mengambil tujuan dan bagian file dari permintaan. Setelah itu, metode membuat FileOutputStream dan mentransfer file ke lokasi yang diinginkan. Bagian penanganan kesalahan metode mendeteksi dan mengatasi beberapa penyebab paling sering dari kesalahan file tidak ditemukan.

Menerapkan kode

Sekarang kita harus membangun dan menjalankan program kita. Untuk itu, Anda dapat menggunakan salah satu IDE pilihan Anda seperti NetBeans, Eclipse, Intellij Idea dll. Setelah Anda selesai melakukannya, sebagian menuju ke

https://cdn.pixabay.com/photo/2016/11/30/20/58/programming-1873854__340.png

Jika Anda menggunakan NetBeans, buka Netbeans IDE dan arahkan ke direktori kerja. Lihat dokumentasi resmi Java jika Anda mengalami masalah. Klik kanan folder Anda di tab Projects dan pilih Deploy. Selanjutnya, kita dapat mengakses browser dan mengetikkan URL di bawah ini:

http://localhost:8080/{namafolder}/

Halaman HTML yang dibuat di atas akan terbuka setelah Anda memasukkan URL dan menekan tombol enter. Untuk mengunggah file ke lokasi yang diinginkan, kita dapat mencari sistem dan memilih file. Kami mengetik jalur ke folder tempat kami ingin menyimpan File di area tujuan. Direktori harus dapat ditulisi dan sudah ada di sistem. Saat kami mengklik tombol unggah dengan bidang tujuan kosong, pengecualian akan muncul.

Servlet menerima permintaan POST ketika kita mengklik tombol unggah, dan itu menyalin file yang dipilih ke folder yang ditentukan.

Kami dapat mengunjungi folder yang ditunjuk dan memeriksa untuk melihat apakah File yang dimuat (misalnya TextFile.txt) ada setelah mengklik tombol unggah.

Hingga saat ini, kami membuat pengunggah file Java sederhana menggunakan HTML dan Java. Namun, karena "sederhana" menjadi pengunggah yang rumit dengan banyak fitur, mungkin sulit untuk melacak fitur penting dari yang tidak. Belum lagi, ada beberapa masalah keamanan saat kami mempertimbangkan untuk membuat pengunggah dari awal. Oleh karena itu, bagian selanjutnya akan memandu Anda tentang cara mengunggah file dengan Filestack SDK yang aman.

Cara mudah upload file dengan Filestack SDK

Untuk mengikuti, Anda memerlukan kunci API Filestack .

Untuk memulai, instal Filestack SDK menggunakan perintah di bawah ini:

implementasi 'com.filestack:filestack-java:0.9.0'

Untuk mengimplementasikan fitur upload menggunakan Filestack, gunakan kode berikut di file Java Anda:

// Membuat klien
Konfigurasi konfigurasi = konfigurasi baru ( “API_KEY” );
Klien klien = Klien baru (konfigurasi);

// Opsi pengaturan dan metadata terkait unggahan
Opsi StorageOptions = StorageOptions.Builder() baru
.mimeType( “teks/polos” )
.namafile( “file.txt” )
.membangun();

// Lakukan unggahan sinkron
File FileLink = client.upload( “/filepath” , false );

// Lakukan unggahan asinkron
Mengalir<Kemajuan<FileLink>> upload = client.uploadAsync( “filepath” , false );
upload.doOnNext( Konsumen baru <Kemajuan<FileLink>>() {
@Mengesampingkan
public void accept(Progress<FileLink> progress) throws Exception {
System.out.printf( “%f%% File Anda telah diunggah\n” , progress.getPercent());
if (kemajuan.getData() != null ) {
File FileLink = progress.getData();
}
}
});

Untuk memastikannya berfungsi, tes berikut dapat dijalankan:

./file uji

Jika Anda ingin menerapkan aplikasi Anda, Bintray adalah target penerapan. Untuk menyebarkan, Anda memerlukan akun pengguna yang telah terdaftar di organisasi Filestack. Perhatikan juga pedoman rilis Filestack dasar. Variabel lingkungan "BINTRAY USER" dan "BINTRAY API KEY" diperlukan. Untuk berlari:

ekspor BINTRAY_USER=
ekspor BINTRAY_API_KEY=
./file bintrayUpload

Kesimpulan

Anda juga dapat memilih alat pihak ketiga jika Anda merasa sulit memelihara dan membuat sistem pengunggahan file Java Anda sendiri. Karena masalah keamanan dan privasi data, orang mungkin menghindari penggunaan sistem pihak ketiga, misalnya saat mengunggah file yang menyimpan rekam medis.

Selain itu, mereka khawatir akan memiliki sedikit kendali atas siapa yang memiliki akses ke infrastruktur penyimpanan file. Namun, Anda dapat menjamin keamanan formulir dan data dokumen dengan menggunakan solusi unggah file yang andal.

Pertanyaan yang Sering Diajukan (FAQ)

Bisakah Anda memindahkan file menggunakan API?

Ya. Memindahkan file menggunakan API dapat dilakukan dengan menggunakan alat berbasis API yang tersedia di pasaran. Ini dapat dikombinasikan dengan program yang berjalan di berbagai platform seperti program online juga.

Bisakah saya mengirimkan file besar ke REST API?

Mungkin sulit untuk mengunggah file besar, terutama jika ada faktor lain seperti bandwidth yang buruk dan koneksi jaringan. Ini dapat mengakibatkan banyak kegagalan unggahan.

Bagaimana cara Java membaca file yang diunggah?

Menggunakan input stream, program Java membaca kumpulan byte atau karakter. Pembacaan file adalah operasi berurutan yang dimulai dengan membangun objek file, meneruskannya ke file input, membaca data dari aliran, memprosesnya, lalu menutup aliran dan objek file.

Apa itu alat unggah file?

Ini adalah API atau plugin yang dapat dihubungkan ke aplikasi web Anda dan memungkinkan pengguna mengunggah foto, video, dan file teks serta memungkinkan beberapa modifikasi dasar, efek filter, dll.