Unggah file adalah fungsi yang sangat umum di situs web. Anda harus menguraikan parameter permintaan secara langsung menggunakan Servlet untuk mendapatkan file yang diunggah, yang cukup merepotkan. Oleh karena itu, Anda biasanya memilih untuk menggunakan alat sumber terbuka Apache, file Umum. Paket toples ini dapat ditemukan di situs web resmi Apache, atau di bawah folder Lib Struts. Fungsi unggahan struts didasarkan pada implementasi ini.
Common-Fileupload tergantung pada paket Common-IO, jadi Anda juga perlu mengunduh paket ini. Kemudian impor di bawah jalur proyek Anda.
Gunakan kode sebagai berikut
paket oop.hg.ytu.servlet; impor java.io.file; impor java.io.ioException; impor java.io.inputstream; impor java.util.list; impor javax.servlet.servletException; impor javax.servlet.http.httpservlet; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor oop.hu.ytu.dao.uploaddomain; impor org.apache.commons.fileupload.fileItem; impor org.apache.commons.fileupload.disk.diskfileItemFactory; impor org.apache.commons.fileupload.servlet.servletfileupload; Upload kelas publik memperluas httpservlet { / *** menangani permintaan unggahan pengguna* / private static final long serialversionuid = 1l; public void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {// string gambarkan = request.getParameter ("jelas"); DiskFileItemFactory Factory = DiskFileItemFactory baru (); @SuppressWarnings ("Deprecation") string path = request.getRealPath ("/unggah"); // Setel disk buffer path factory.setrepository (file baru (path)); factory.setsizethreshold (1024*1024); // Atur create buffer ukuran servletFileUpload unggah = servletfileupload baru (pabrik); unggah. String va = null; untuk (item fileitem: daftar) {// string name = item.getFieldName (); if (item.isFormField ()) {// menilai apakah itu aliran file va = item.getString ("UTF-8"); // system.out.println (name+"="+va); /// request.setAttribute (name, value); } else {string value = item.getName (); // akan melewati nama path lengkap int start = value.lastIndexof ("//"); String filename = value.substring (mulai+1); // request.setAttribute (nama, nama file); InputStream in = item.getInputStream (); Unggahan domain dao = unggah baru (); //item.write( file (realpath, nama file)); int index = filename.LastIndexOf ("."); String realFileName = filename.substring (0, index); String type = filename.substring (index+1); dao.insert (dalam, realFileName, type, va); // dimasukkan ke dalam database}}} catch (pengecualian e) {e.printstacktrace (); }} public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {doGet (permintaan, respons); }} Di sini kami menentukan apakah itu aliran atau parameter yang diunggah dalam formulir, seperti mengirimkan informasi di kotak teks, dan kemudian masukkan ke dalam database. Kode penyisipan database adalah sebagai berikut
paket oop.hu.ytu.dao; impor java.io.inputstream; impor java.sql.connection; impor java.sql.preparedstatement; impor java.sql.Resultset; impor oop.hg.ytu.utils.jdbcutils; /*** Memberikan dukungan unggahan file* @author Administrator**/Public class unggahDomain {/*** Masukkan file yang diunggah ke dalam database*/public void insert (inputStream in, string filename, string type, string gambarkan) Lempar Pengecualian {// Gambar ke koneksi database koneksi Conn = null; Disiapkan ps = null; Hasil rs = null; System.out.println (jelas); coba {// 2. Buat koneksi koneksi conn = jdbcutils.getConnection (); // 3. Buat Pernyataan String SQL = "Sisipkan ke Fileupload (File, FileName, Type, Des) Value (?,?,?,?)"; ps = conn.preparestatement (SQL); ps.setBlob (1, dalam); ps.setstring (2, nama file); ps.setstring (3, jenis); ps.setstring (4, jelas); // 4. Jalankan pernyataan ps.executeUpdate (); melampirkan(); } akhirnya {jdbcutils.free (rs, ps, conn); }}} Anda dapat menemukan batas ukuran harga basis data default. Anda perlu mengubah konfigurasi berikut di bawah my.ini di bawah direktori instalasi MySQL.
[mysqld]
max_allowed_packet = 64m
Itu saja. Tentu saja, perhatikan format pengkodean. Unggah file dan selesaikan. Hal lain adalah bahwa salah satu nama kolom saya diatur untuk dijelaskan, dan hasilnya adalah bahwa saya telah bertentangan dengan kata -kata yang dicadangkan oleh MySQL, dan informasi tidak dapat dimasukkan. Anda harus memperhatikannya di masa depan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.