В этой статье используется конкретный код для Java Fack Packatch Files Files и сжатие их в загрузки ZIP для вашей ссылки. Конкретный контент заключается в следующем
Из -за потребностей проекта файлы изображений на сервере сжаты и упакованы и загружаются на локальный рабочий стол.
Во-первых, Front-End JS:
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 ('ntic', «Пожалуйста, введите код запроса транзакции»); возвращаться; } 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}, rcaTime: rcAtime: if (rcdata.success) {var rows = rcdata.picinfo; Все </th> <th style = 'width: 10%; text-align: center'> date </th> <th style = 'width: 10%; text-align: center'> date </th> <th style = 'ширина: 10%; текстовый альбом: Центр'> есть любое изображение </th> <th style = 'width: 23%; Text-align: Center'> That name </th> </th Style = 'width: 23%; 10%; Text-Align: Center '> Статус торговли </th> <th Style =' Ширина: 12%; Text-Align: Center '> Номер устройства </th> <th Style =' Ширина: 10%; текстовой алижение: центр '> торговый код </th> <th Style =' ширина: 10%; Text-align: Center '> Аффилированное институт </th> <th Style =' width: 10%; Время </th> </tr> </thead> <tbody> "; for (var i = 0; i <rows.length; i ++) {detailhtml = deftainhtml +" <tr> <td align = 'center'> <input type = 'fackbox' name = 'picture' value = '" + rows [i] .f_date + rows [i]. /> </td> <td> " + Rows [i] .f_date +" </td> <td> " + Rows [i] .ishasimg +" </td> <td> " + Rows [i] .f_tx_name +" </td> <td> " + Rows [i]. Rows [i] .f_dev_id + "</td> <td>" + Rows [i] .f_svr_code + "</td> <td>" + Rows [i] .f_svr_code + "</td> <td>" + Rows [i] .f_brno + " "</td> </tr>"; }); }}}Приведенный выше код отображается на интерфейсе после запроса соответствующих данных, а затем в соответствии с потребностями клиента, вы можете выбрать, какие части данных для загрузки и сохранения.
Прикрепите флажок Выберите All/Cancel Выберите All JS -код
// флажок выберите All/Cancel Select All var ischeckall = false; function swapcheck () {if (ischeckall) {$ ("input [type = 'fackbox']"). Каждый (function () {this.Checked = false;}); ischeckall = false; } else {$ ("input [type = 'fackbox']"). Каждый (function () {this.checked = true;}); ischeckall = true; }} Следующий код используется для фонового взаимодействия. Пожалуйста, напомните мне, что если вы загружаете файлы, не используйте Ajax для отправки данных. Я сделал это раньше и не мог скачать его. Я обнаружил это только после целого дня. Часть комментариев - код AJAX. Вы можете взглянуть на это как на ссылку:
function downloadpic () {var arr = new Array (); var picids = document.getElementsbyname ("pictureID"); for (i = 0; i <picids.length; i ++) {if (picids [i] .cecked) {arr.push (picids [i] .value); }} if (arr.length <= 0) {$ .messager.alert ('t romplet', "без загрузки контента!"); возвращаться; } else {$ ('#formpic'). attr ('action', 'downloadpic.translog.action'); $ ("#formpic"). form ('отправить', {onsubmit: function () {}, успех: function (data) {$ .messager.alert ('Hint', 'загрузка изображения успешно', 'info');}}); /**** } else {$ .messager.alert ('ntice', rcdata.errmsg); */}} Следующим является фоновое взаимодействие, во -первых, уровень управления контроллером:
/** * Загрузка карт изображения * @param запрос * @param response * @return * @throws ioexception */public void downloadpic (httpservletrequest, httpservletresponse response) throws ioexception {// map <string, объект> params = getParameters (запрос); String [] pictureIds = request.getParametervalues ("picture"); Аутентификация au = getAuthentication (запрос); Service.DownLoadPic (PictureIds, AU, запрос, ответ); возвращаться ; } Служба уровня:
public void downloadpic (string [] params, аутентификация Au, httpservlectrequest, httpservletresponse response), выбросит ioexception {// Начальная настройка сжатого файла Path = System.getProperty ("ics.webapp.root"); // Это адрес сервера, request.getSession (). String filezip = au.getusername ()+"-"+au.getattribute ("f_brno")+"pictures.zip"; String filePath = path + "//" + filezip; // Затем он используется для генерации Zip -файла // filePatharr - это набор путей файла PDF, полученных через запрос базы данных на основе информации, передаваемой из Lodergrable (специфически в список суффикса) <map <string >> filenamearr = new Arraylist <map <string, object >> (););); // jsonarray jsons = jsonarray.fromobject (params.get ("picturelist")); /***list <string> pictureIds = new ArrayList <string> (); for (Object obj: jsons) {pictures.add (obj.toString ()); } */ for (int i = 0; i <params.length; i ++) {map <string, object> spemap = new hashmap <string, object> (); spemap.put ("f_date", params [i] .substring (0, 8)); spemap.put ("f_ics_batch", params [i] .substring (8)); Список <map <string, object >> eClists = dao.queryloginfo (spemap); for (int j = 0; j <reccists.size (); j ++) {filenAmearr.Add (Recists.get (j)); }} // Файл, который должен быть сжат, не включает адрес файла и имя файла // string [] pathtytyt = {"d: //13.jpg", "d: //1212.jpg"}; // Сгенерированный адрес сжатого файла и имя файла // string despath = "d: //downloads//new.zip"; File Zipfile = новый файл (filePath); Zipoutputstream Zipstream = null; FileInputStream Zipsource = null; BufferedInputStream BufferStream = null; try {// Создание выходного потока окончательного сжатого пакета Zipstream = new ZipoutputStream (new FileOutputStream (Zipfile)); for (int i = 0; i <filenAmearr.size (); i ++) {file file = new file ((string) filenamearr.get (i) .get ("f_filename")); // файл файла = новый файл (pathtytyt [i]); // Форматируйте файл, который необходимо сжать в входной потоковой Zipsource = new FileInputStream (file); // Сжатые записи не являются конкретными независимыми файлами, а элементы списка в списке сжатых файлов пакетов, называемых записями, точно так же, как имени // Имя здесь - это имя файла, и дублирование файла приведет к перезаписи файла. Здесь I -плюс имя файла используется для распознавания отдельного файла Zipentry Zipentry = new Zipentry (i+file.getName ()); // найти местоположение сжатой записи и начать записывать файл в сжатый пакет Zipstream.putNextEntry (Zipentry); // входные буфеты = новый буффилнтинпутный поток (Zipsource, 1024 * 10); int Read = 0; // Создать чтение и записи буферного байта [] buf = new Byte [1024 * 10]; while ((read = bufferstream.read (buf, 0, 1024 * 10))! = -1) {zipstream.write (buf, 0, read); }}} catch (Exception e) {e.printstackTrace (); } наконец {// закройте поток try {if (null! = bufferstream) bufferstream.close (); if (null! = zipstream) zipstream.close (); if (null! = Zipsource) zipsource.close (); } catch (ioException e) {e.printstackTrace (); }} /*** Записать файл потока в фронтальный браузер ServletOutputStream OS = response.getOutputStream (); response.setContentType ("Application/x-octet-stream"); response.setContentLength ((int) zipfile.length ()); response.addheader ("content-disposition", "Attachment; filename =" + urlencoder.encode (filezip, "UTF-8")); BufferedInputStream bis = null; BufferedOutputStream bos = null; try {bis = new BufferedInputStream (new FileInputStream (filePath)); bos = new BufferedOutputStream (OS); byte [] buff = new Byte [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; } Наконец {if (bis! = Null) bis.close (); if (bos! = null) bos.close (); Файл obj = новый файл (filePath); if (obj.exists ()) {obj.delete (); // удалить временные сжатые файлы, сгенерированные локально сервером}}*/// Загрузить браузер // Получить информацию о прокси-кончике браузера // судить о доверенности браузера и установить формат кодирования, который отвечает на браузер соответственно String FinalFilename = null; if (stringUtils.contains (userAgent, "msie") || stringUtils.contains (userAgent, "trident")) {// IE browser finalfilename = urlencoder.encode (filezip, "UTF-8"); System.out.println ("IE Browser"); } else if (stringUtils.contains (userAgent, "mozilla")) {// Google, Firefox Browser finalfilename = urlencoder.encode (filezip, "utf-8"); } else {finalfilEname = urlencoder.encode (filezip, "utf-8"); // другие браузеры} response.setContentType ("Application/x-octet-stream"); // Расскажите браузеру, чтобы загрузить файл вместо того, чтобы открыть его напрямую. Браузер по умолчанию открывает response.setheader ("Content-Disposition", "ATTHAMENT; FILENAME =" +finalFilENAME); // Имя загрузки File ServletOutptReam ServletOutputStream = response.getOutputStream (); DataOutputStream Temps = new DataOutputStream (ServletOutputStream); DataInputStream in = new DataInputStream (new FileInputStream (filePath)); // Путь к файлу загрузки браузера Byte [] b = новый байт [2048]; File reportzip = new File (filePath); // Затем он используется для удаления временного сжатого файла Try {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 ()+"packing picture"+filezip+");"); } наконец {if (temps! = null) temps.close (); if (in! = null) in.close (); if (reportzip! = null) reportzip.delete (); // Удалить временный сжатый файл, сгенерированный локально с помощью сервера ServletOutputStream.Close (); } /***if (picinfollist.size ()> 0) {rc.put ("успех", true); rc.put ("picinfo", picinfollist); optlogsvc.savelog (au.getusername (), au.getattribute ("f_brno"), au.getattribute ("f_lstip"), toptlogservice.type_mr, "", au.getusername ()+"Загрузка запроса"+params.get ("f_svr_code ()") ") } else {rc.put ("успех", false); rc.put ("errmsg", "тест информации"); optlogsvc.savelog (au.getusername (), au.getattribute ("f_brno"), au.getattribute ("f_lstip"), toptlogservice.type_mr, "", au.getusername ()+"Загрузка запроса"+Params.get ("f_svr_code ()+") }*/ optlogsvc.savelog (au.getusername (), au.getattribute ("f_brno"), au.getattribute ("f_lstip"), toptlogservice.type_mr, ", au.getusername ()+" packation picture filezip+"); возвращаться ; }Существует проблема с форматом преобразования массива JSON. Если JSON, отправленный с фронтального JSON, отформатирован JSON.Stringify, он должен быть проанализирован таким образом, когда вы идете на задний план.
Мои навыки макета не очень хороши, так что давайте посмотрим. Я судил, что браузер был скопирован в Интернете, но я обнаружил, что он бесполезен и не мог распознать китайцев. В конце концов, я скомпрометировал и все еще использовал английский в качестве имени файла. Если вы столкнетесь с искаженным кодом Китая, вы можете найти снова на Baidu. Другие написали подобные статьи, но у меня нет энергии, чтобы изучать их.
Это метод сжатия файлов, которые существуют на сервере. Я также видел статьи, связанные с Baidu, чтобы получить сетевые изображения, сжать и загрузить их, что интересно.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.