Artikel ini membagikan kode spesifik untuk file unduhan batch latar belakang java dan mengompresnya menjadi unduhan zip untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Karena kebutuhan proyek, file gambar di server dikompresi dan dikemas, dan diunduh ke desktop lokal.
Pertama, JS front-end:
function doquerypic () {var picsdate = $ ("#picsdate"). val (); var pianodate = $ ("#picdate"). val (); var picinst = $ ("#pic_inst"). ComboTree ("getValue"); var svrcode = $ ("#pic_svr_code"). val (); var picstime = $ ("#pic_stime"). val (); var pianotime = $ ("#pic_etime"). val (); if (svrcode == null) {$ .messager.alert ('hint', "Harap masukkan kode kueri transaksi"); kembali; }else{ $.ajax({ type: "POST", url: 'queryPic.translog.action', data: {f_brno:picInst,f_sdate:picsDate,f_edate:picDate,f_svr_code:svrCode,f_stime:picsTime,f_etime:picTime}, success: function(rcdata){ if (rcdata.success) {var rows = rcdata.picinfo; var detailshtml = "<tabel class = 'my-form-table' cellpading = '0' width = '90%'align =' center '> <tr> <style =' width: 5%; Text-Align: center ') <tr> <tH style =' width: 5%; text-align: center 'center'> <TR> <TH style = 'width: 5%; Text-Align: Center' center '> semua </t> <th style = 'width: 10%; Text-align: center'> tanggal </th> <th style = 'width: 10%; text-align: center'> Tanggal </th> <tH style = 'width: 10%; Text-align: center'> ada gambar </th> <tH style = 'width: 23%;' Text-Text-center '> ada gambar </th> <tH style =' width: 23%; 'Text-Text- 10%;text-align: center'>Trading status</th><th style='width: 12%;text-align: center'>Device number</th><th style='width: 10%;text-align: center'>Trading code</th><th style='width: 10%;text-align: center'>Affiliated institution</th><th style='width: 10%;text-align: center'>Trading Waktu </th> </tr> </thead> <tbody> "; for (var i = 0; i <rows.length; i ++) {detailHtml = detailHtml +" <tr> <td align = 'center'> <input type = 'centang' nama = 'pictureid' value = '" + rowse'. /> </td> <td> " + baris [i] .f_date +" </td> <td> " + baris [i] .ishasimg +" </td> <td> " + baris [i] .f_tx_name +" </td> <td> " + Buruk [i] .f_stus +" </td> <td> " + Buruk [i]. Baris [i] .f_dev_id + "</td> <td>" + baris [i] .f_svr_code + "</td> <td>" + baris [i] .f_svr_code + "</td> <td>" + baris [i] .f_brno + "</td> </td. "</td> </tr>"; }); }}}Kode di atas ditampilkan pada antarmuka setelah meminta data yang relevan, dan kemudian sesuai dengan kebutuhan pelanggan, Anda dapat memilih bagian data mana yang akan diunduh dan disimpan.
Lampirkan kotak centang Pilih semua/Batalkan Pilih Semua Kode JS
// kotak centang pilih semua/batal pilih semua var isCheckall = false; function swapcheck () {if (isCheckall) {$ ("input [type = 'checkbox']"). masing -masing (fungsi () {this.checked = false;}); ischeckall = false; } else {$ ("input [type = 'centang kotak']"). masing -masing (fungsi () {this.checked = true;}); ischeckall = true; }} Kode berikut digunakan untuk interaksi latar belakang. Harap ingatkan saya bahwa jika Anda mengunduh file, jangan gunakan AJAX untuk mengirim data. Saya melakukannya sebelumnya dan tidak bisa mengunduhnya. Saya hanya menemukannya setelah seharian. Bagian komentar adalah kode AJAX. Anda dapat melihatnya sebagai referensi:
fungsi downloadpic () {var arr = array baru (); var picids = document.getElementsbyname ("pictureId"); untuk (i = 0; i <picids.length; i ++) {if (picids [i] .Checked) {arr.push (picids [i] .value); }} if (arr.length <= 0) {$ .messager.alert ('t prompt', "Tidak ada konten unduhan!"); kembali; } else {$ ('#formpic'). attr ('action', 'downloadpic.translog.action'); $ ("#formpic"). Form ('Kirim', {Onsubmit: function () {}, Success: function (data) {$ .messager.alert ('hint', 'unduhan gambar berhasil', 'info');}}); /***$. Ajax ({type: "Post", url: 'downloadpic.translog.action', data: {picturelist: json.stringify (arr)}, sukses: fungsi (rcdata) {if (rcData.success) {$ .messager.show ({ife: 'rcdata.success) {$ .messager.show ({{{{{{{{rcData' } else {$ .messager.alert ('hint', rcdata.errmsg); */}} Berikutnya adalah interaksi latar belakang, pertama -tama, lapisan kontrol pengontrol:
/** * Unduh Batch Gambar * @param Permintaan * @param Response * @return * @throws IoException */public void downloadpik (httpservletRequest, httpservletResponse response) melempar ioException {// peta <string, objek> params = getParameters (request); String [] pictureIds = request.getParameterValues ("pictureId"); Otentikasi au = getAuthentication (permintaan); service.downloadpic (PictureIDs, AU, Request, Response); kembali ; } Lapisan Layanan:
public void downloadpic (string [] params, otentikasi au, permintaan httpservletrequest, respons httpservletResponse) melempar ioException {// pengaturan awal dari string file path = getSeal ("ics. juga digunakan string filezip = au.getusername ()+"-"+au.getAttribute ("f_brno")+"pictures.zip"; String filePath = path+"//" + fileZip;//Then it is used to generate a zip file//filePathArr is the set of pdf file paths obtained through the database query based on the information transmitted from the foreground (specifically to the suffix) List<Map<String, Object>> fileNameArr = new ArrayList<Map<String,Object>>(); // jsonarray jsons = jsonarray.fromObject (params.get ("pictureList")); /***Daftar <String> pictureIds = ArrayList baru <string> (); untuk (objek obj: jsons) {pictureids.add (obj.tostring ()); } */ for (int i = 0; i <params.length; i ++) {peta <string, object> spemap = hashmap baru <string, object> (); spemap.put ("f_date", params [i] .substring (0, 8)); spemap.put ("f_ics_batch", params [i] .substring (8)); Daftar <peta <string, objek >> reclists = dao.queryloginfo (spemap); untuk (int j = 0; j <reccists.size (); j ++) {filenamearr.add (recists.get (j)); }} // File yang perlu dikompresi-termasuk alamat file dan nama file // string [] pathtytyt = {"d: //13.jpg", "d: //1212.jpg"}; // Alamat file terkompresi dan nama file yang akan dihasilkan // string despath = "d: //downloads//new.zip"; File zipfile = file baru (filepath); ZipoutputStream zipstream = null; FileInputStream Zipsource = null; BufferedInputStream bufferStream = null; coba {// Bangun aliran output dari paket terkompresi akhir zipstream = new ZipoutputStream (FileOutputStream baru (zipFile)); untuk (int i = 0; i <fileNeMearR.size (); i ++) {file file = file baru ((string) fileNeMearr.get (i) .get ("f_fileName")); // file file = file baru (pathtytyt [i]); // Format file yang perlu dikompresi ke dalam aliran input zipsource = FileInputStream baru (file); // Entri terkompresi bukanlah file independen tertentu, tetapi daftar item dalam daftar file paket terkompresi, yang disebut entri, seperti indeks // nama di sini adalah nama file, dan duplikasi file akan menyebabkan file ditimpa. Di sini, saya plus nama file digunakan untuk pengenalan file tunggal zipentry zipentry = new zipentry (i+file.getName ()); // Temukan lokasi entri terkompresi dan mulailah menulis file ke paket terkompresi zipstream.putNextEntry (zipEntry); // input bufferstream = baru bufferedInputStream (zipsource, 1024 * 10); int baca = 0; // Buat byte buffer baca dan tulis [] buf = byte baru [1024 * 10]; while ((baca = bufferstream.read (buf, 0, 1024 * 10))! = -1) {zipstream.write (buf, 0, baca); }}} catch (Exception e) {e.printstacktrace (); } akhirnya {// tutup aliran coba {if (null! = bufferstream) bufferstream.close (); if (null! = zipstream) zipstream.close (); if (null! = zipsource) zipsource.close (); } catch (ioException e) {e.printstacktrace (); }} /*** Tulis file stream ke browser front-end servletoutputStream os = response.getoutputStream (); response.setContentType ("Application/X-Octet-Stream"); response.setContentLength ((int) zipfile.length ()); response.addheader ("konten-disposisi", "lampiran; fileName =" + urlencoder.encode (filezip, "utf-8"))); BufferedInputStream bis = null; BufferedOutputStream bos = null; coba {bis = baru bufferedInputStream (fileInputStream baru (filepath)); BOS = BufferedOutputStream baru (OS); byte [] buff = byte baru [2048]; int bytesread; while (-1! = (bytesread = bis.read (buff, 0, buff.length))) {bos.write (buff, 0, bytesread); } os.flush (); os.close (); } catch (ioException e) {throw e; } Akhirnya {if (bis! = Null) bis.close (); if (bos! = null) bos.close (); File obj = file baru (filepath); if (obj.exists ()) {obj.delete (); // hapus file terkompresi sementara yang dihasilkan secara lokal oleh server}}*/// unduh browser // dapatkan informasi proxy browser final string useragent = request.getHeader ("user-agent"); // menilai proxy browser dan mengatur format pengkodean yang merespons masing -masing browser string finalFileName = null; if (stringutils.contains (userAgent, "msie") || stringutils.contains (userAgent, "trident")) {// yaitu browser finalFileName = urlencoder.encode (FileZip, "UTF-8"); System.out.println ("IE Browser"); } lain jika (stringutils.contains (userAgent, "mozilla")) {// google, firefox browser finalFileName = urlencoder.encode (filezip, "utf-8"); } else {finalFileName = urlencoder.encode (filezip, "utf-8"); // browser lain} response.setContentType ("Application/X-octet-stream"); // Beri tahu browser untuk mengunduh file alih-alih membukanya secara langsung. Default browser untuk membuka respons.setHeader ("Disposisi Konten", "lampiran; fileName =" +finalFileName); // Nama file unduhan servletoutputStream servletoutputStream = response.getoutputStream (); DataOutputStream temps = DataOutputStream baru (serveTeTutputStream); DataInputStream di = DataInputStream baru (FileInputStream baru (FilePath)); // Jalur ke byte file unduhan browser [] b = byte baru [2048]; File ReportZip = File baru (FilePath); // Kemudian digunakan untuk menghapus file terkompresi sementara coba {while ((in.read (b))! = -1) {temps.write (b); } temps.flush (); } catch (Exception e) {E.PrintStackTrace (); optlogsvc.savelog (au.getUserName (), au.getAttribute ("f_brno"), au.getAttribute ("f_lstip"), toptlogservice.type_mr, "", au.getusername ()+"gambar unduhan file"+"+" Kegagalan! " } akhirnya {if (temps! = null) temps.close (); if (in! = null) in.close (); if (ReportZip! = NULL) ReportZip.Delete (); // Hapus file terkompresi sementara yang dihasilkan secara lokal oleh server servletoutputStream.close (); } /***if (picInfollist.size ()> 0) {rc.put ("Success", true); rc.put ("picinfo", picinfollist); optlogsvc.savelog (au.getUserName (), au.getAttribute ("f_brno"), au.getAttribute ("f_lstip"), TopTlogService.type_mr, "", au.getusername ()+"unduhan batch query" get. " } else {rc.put ("Success", false); rc.put ("errmsg", "info tes"); optlogsvc.savelog (au.getUserName (), au.getAttribute ("f_brno"), au.getAttribute ("f_lstip"), toptlogservice.type_mr, "", au.getusername ()+"unduhan batch query" get. " }*/ optlogsvc.savelog (au.getusername (), au.getAttribute ("f_brno"), au.getattribute ("f_lstip"), toptlogservice.type_mr, "", au.getUsername ()+"Filezip" gambar Batch "Batzip", "" "", "" "," kembali ; }Ada masalah dengan format konversi array JSON. Jika JSON yang dikirim dari JSON front-end diformat oleh JSON.Stringify, itu harus diuraikan dengan cara ini ketika Anda pergi ke latar belakang.
Keterampilan tata letak saya tidak baik, jadi mari kita lihat. Saya menilai bahwa browser itu disalin secara online, tetapi saya menemukan bahwa itu tidak berguna dan tidak dapat mengenali bahasa Cina. Pada akhirnya, saya berkompromi dan masih menggunakan bahasa Inggris sebagai nama file. Jika Anda menemukan kode kacau Cina, Anda dapat mencari lagi di Baidu. Yang lain telah menulis artikel serupa, tetapi saya tidak memiliki energi untuk mempelajarinya.
Ini adalah metode untuk mengompresi file yang ada di server. Saya juga telah melihat artikel terkait Baidu sebelumnya untuk mendapatkan gambar jaringan dan mengompres dan mengunduhnya, yang menarik.
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.