Artikel ini membagikan kode spesifik untuk Java untuk mengimplementasikan fungsi unggahan dan unduhan file untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Front-end menggunakan properti enctype dari formulir untuk memodifikasi metode pengiriman data ke formulir "stream" biner. Server (Servlet) memperoleh informasi aliran melalui getInputStream (), dan menggunakan operasi dasar aliran I/O Java untuk menulis aliran ke suhu file sementara yang dibuat oleh server. Kemudian, gunakan operasi file dasar lagi untuk membaca dan mencegat konten file sementara, buat file yang sesuai berdasarkan informasi di dalamnya, dan tulis informasi spesifik yang dibaca. Saat mengunduh, temukan file yang sesuai di server berdasarkan nama file yang dikirimkan, dan kemudian output ke halaman sesuai dengan aliran output di luar, dan atur jenis respons dan header respons dari servlet.
Proses transmisi spesifik adalah sebagai berikut:
Bagian dari informasi aliran adalah:
Kode spesifiknya adalah sebagai berikut:
Kode front-end:
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <itement> Sisipkan judul di sini </iteme> <skrip src = "js/jQuery.js"> </script> </head> <body> <form Action = "fileUpervet"> </script "</head> <body> <form Action =" fileUpervet "" formal "</script> </head> <body> <Form Action =" FileUpervy.js " <tr> <td>Please select upload file:</td><td><input id="myfile" name="myfile" type="file" value="" /></td> <td><input type="submit" value="upload"></td> </tr> <tr><td>${info}</td></tr> </table> </form> File download: <a href = "fileloadOwnServlet? filename = $ {filename}"> $ {fileName} </a> </body> </html>Unggah bagian servlet (inti)
@WebServlet ("/FileUpserVlet") FileupServlet kelas publik memperluas httpservlet {private static final long serialversionuid = 1l; / ** * @see httpservlet#httpservlet () */ public fileupservlet () {super (); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, tanggapan); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setcharacterencoding ("UTF-8"); InputStream FileSource = request.getInputStream (); // Request mendapatkan informasi stream string TempName = "d:/temp"; // tempfile mewakili penyimpanan sementara file tempfile = file outputsstream tempfile (tempfile); byte b [] = byte baru [1024]; int n; while ((n = FileSource.read (b))! = -1) // Baca 1024 byte dari aliran output setiap kali sampai Anda selesai membaca {outputStream.write (b, 0, n); } outputStream.close (); FileSource.close (); // Tutup aliran input dan output/*Berikut ini adalah operasi file tertentu, terutama untuk mem -parsing file temp yang dihasilkan sementara, dan sebagian besar pengetahuan adalah konten dari stream input dan output Java! */RandomAccessFile randomFile = RandomAccessFile baru (tempfile, "r"); // aliran acak, tentukan untuk membaca file sementara, baca hanya acakfile.readline (); // baca baris pertama, data tidak valid, tidak ada string string = randomFile.readline (); // baca baris kedua int beginindex = str.lastlex yang disetujui (") () ();/ endIndex = str.LastIndexOf ("/" "); // Tentukan lokasi data string yang diperlukan fileName = str.substring (beginIndex, endIndex); // mencegat nama file // reposisi pointer file dan dapatkan konten file randomFile.seek (0); // File pointer dimulai dari start starteks awal = 0; (n = randomFile.readbyte ())! = -1 && i <= 4) {if (n == '/n') {startext = randomfile.getFilePointer (); Randomfile.getFilePointer (); getServletContext (). getRealPath ("/")+"Images"; // Setel Sistem Direktori Simpan File.out.println (RealPath); RandomAccessFile ACCHOLACCESSFILE = RandomAccessFile baru (SaveFile, "RW"); acak.close (); berhasil! "); request.setAttribute (" FileName ", fileName); request.getRequestDispatcher ("/fildeop.jsp "). Forward (Request, Response);}}Bagian unduh
Dopost void yang dilindungi (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {// TODO Metode yang dihasilkan secara otomatis string string stub filename = request.getParameter ("fileName"); String path = getSerVletContext (). GetRealPath ("/")+"gambar/"; File file = file baru (path+fileName); // file if (file.exists ()) {response.setContentType ("Application/x-msdownload"); // Atur tipe respons, berikut adalah type download response.setHeader ("konten-disposisi", "lampiran; fileName =/" "+nama file+"/""); // buka inputStream inputStream = new FileInputStream (file); ServETOutputStream outputStream = response.getOutputStream (); byte b [] = byte baru [1024]; int n; while ((n = inputStream.read (b))! = -1) {outputStream.write (b, 0, n); } outputStream.close (); inputStream.close (); } else {request.setAttribute ("hasil", "file tidak ada! Unduh gagal!"); request.getRequestDispatcher ("/fildeop.jsp"). Forward (Request, Response); }}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.