1. Cara paling langsung dan sederhana adalah dengan memasukkan alamat file langsung ke link di halaman html. Kerugiannya adalah jalur file di server terbuka, dan kontrol lain (seperti izin) pada pengunduhan file tidak dapat dilakukan. Saya tidak akan menulis contohnya di sini.
2. Di sisi server, file diubah menjadi aliran keluaran, ditulis ke respons, dan file dibawa ke browser dengan respons. Browser menanyakan pengguna apakah dia ingin menyimpan file secara lokal. (contoh di bawah)
<%
respon.setContentType(fileminitype);
respon.setHeader("Lokasi",namafile);
respon.setHeader("Kontrol Cache", "max-age=" + cacheTime);
respon.setHeader("Disposisi Konten", "lampiran; nama file=" + nama file); //nama file harus dikodekan (utf-8)
respon.setContentLength(panjang file);
OutputStream outputStream = respon.getOutputStream();
InputStream inputStream = FileInputStream baru(jalur file);
byte[] penyangga = byte baru[1024];
ke dalam saya = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, saya);
}
keluaranStream.flush();
outputStream.close();
inputStream.close();
aliran keluaran = nol;
%>
3. Karena ini JSP, cara lain adalah menggunakan Applet untuk mendownload file. Namun, pelanggan harus terlebih dahulu mempercayai applet Applet Anda, yang akan menerima aliran data yang dikirim oleh servlet dan menulisnya secara lokal.
contoh sisi servlet
layanan kekosongan publik (permintaan HttpServletRequest, HttpServletResponse res)
melempar ServletException, IOException {
res.setContentType("teks/polos");
Aliran Keluaran Aliran Keluaran = null;
mencoba {
outputStream = res.getOutputStream();
popFile(srcFile, outputStream));//Tulis file dengan path file srcFile ke dalam outputStream.
} tangkapan (IOException e) {
e.printStackTrace();
}
}
Contoh sisi JApplet
URLConnection con;
mencoba {
con = url.openConnection();//url adalah URL SERVLET yang disebut seperti http://localhost:8080/sendDateSevlet.do
con.setUseCaches(salah);
con.setDoInput(benar);
con.setDoOutput(benar);
con.setRequestProperty("Tipe Konten",
"aplikasi/aliran oktet");
InputStream di = con.getInputStream();
ProgressMonitorInputStream pmInputStream = ProgressMonitorInputStream baru(
panel, "Mengunduh konten file dari server", di);
ProgressMonitor pMonitor = pmInputStream
.getProgressMonitor();
pMonitor.setMillisToDecideToPopup(3);
pMonitor.setMillisToPopup(3);
String localfilepath = localstr + nama file;//localfilepath jalur lokal, folder file localstr, nama file nama file lokal
if(saveFilsaveFilee(localfilepath,pmInputStream)){ //Metode saveFilsaveFilee menulis aliran input pmInputStream ke file localfilepath.
openLocalFile(jalur file lokal);
}
4. Omong-omong, kode JApplet untuk mengunggah file juga diposting.
Contoh sisi JApplet
URLConnection con;
mencoba {
con = url.openConnection();//url adalah URL SERVLET yang disebut seperti http://localhost:8080/sendDateSevlet.do
con.setUseCaches(salah);
con.setDoInput(benar);
con.setDoOutput(benar);
con.setRequestProperty("Tipe Konten",
"aplikasi/aliran oktet");
OutputStream keluar = con.getOutputStream();
String localfilepath = localstr + nama file; //localfilepath jalur lokal, folder file localstr, nama file nama file lokal
getOutputStream(localfilepath,out);//File getOutputStream menulis file localfilepath ke aliran output keluar.
InputStream di = con.getInputStream();
kembali benar;
}menangkap (IOException e) {
System.out.println("Kesalahan pengunggahan file!");
e.printStackTrace();
}
contoh kode sisi servlet
layanan kekosongan publik (permintaan HttpServletRequest, HttpServletResponse res)
melempar ServletException, IOException {
res.setContentType("teks/polos");
Aliran Masukan aliran masukan = null;
mencoba {
inputStream = res.getInputStream();
writefile(srcFile, inputStream);//Simpan aliran input inputStream ke file dengan jalur file srcFile
} tangkapan (IOException e) {
e.printStackTrace();
}
} //
ringkasan layanan akhir: Dalam transmisi file, ada dalam bentuk aliran, dan di hard disk, ada dalam bentuk file. Yang harus kita lakukan adalah mengirimkan aliran dan membaca aliran melalui HttpServletRequest dan HttpServletResponse, atau respons dan permintaan. Serta operasi yang mengubah file menjadi aliran atau aliran ke file.