日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java Springboot如何基于圖片生成下載鏈接

瀏覽:20日期:2022-09-03 14:57:19

現有一些圖片在服務器上的鏈接,在瀏覽器中打開這些鏈接是直接顯示在瀏覽器頁面的形式。

現在需要生成這些圖片的單獨下載以及打包下載鏈接,即在瀏覽器中打開下載鏈接后彈出下載框提示下載。由于前端存在跨域問題,所以圖片下載由后臺接口完成。

首先編寫文件下載工具類:

import java.net.URL;import java.net.MalformedURLException;import org.apache.commons.io.FileUtils;public class FileDownloadUtil {/** * 下載文件---返回下載后的文件存儲路徑 * * @param url 文件路徑 * @param dir 目標存儲目錄 * @param fileName 存儲文件名 * @return */ public static void downloadHttpUrl(String url, String dir, String fileName) throws BusinessException { try { URL httpurl = new URL(url); File dirfile = new File(dir); if (!dirfile.exists()) {dirfile.mkdirs(); } FileUtils.copyURLToFile(httpurl, new File(dir+fileName)); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace();26 } } public static boolean deleteFile(File file) { if (file.exists()) { return file.delete(); } return false; }}

單張圖片下載

Controller層接口:

import org.apache.commons.lang.StringUtils;import java.io.*;protected HttpServletResponse response;/** * 單張圖片下載 * * @param url 要下載的圖片url * @author: nemowang */ @ApiImplicitParams({ @ApiImplicitParam(name = 'url', value = '圖片url', required = true, dataType = 'String', paramType = 'query'), }) @ApiOperation(value = '單張圖片下載', notes = '單張圖片下載') @RequestMapping(value = '/downloadPicture', method = RequestMethod.GET) public void downloadPicture(String url) {// 拼接完整圖片路徑。這里填寫圖片鏈接 String urlPath = ''; // 獲取圖片文件后綴名 String postfix = '.' + StringUtils.substringAfterLast(url, '.'); // 獲取當前類的所在項目路徑 File directory = new File(''); String courseFile; String srcPath; File srcFile = null; FileInputStream fileInputStream = null; InputStream fis = null; OutputStream out = null; try { courseFile = directory.getCanonicalPath(); String fileName = '' + StringUtil.getUUID() + postfix; // 下載文件 FileDownloadUtil.downloadHttpUrl(urlPath, courseFile, fileName); srcPath = courseFile + fileName; srcFile = new File(srcPath); fileInputStream = new FileInputStream(srcPath); fis = new BufferedInputStream(fileInputStream); byte[] buffer = new byte[fis.available()]; fis.read(buffer); response.setContentType('application/octet-stream'); response.setHeader('Content-disposition', 'attachment;filename=' + fileName); out = response.getOutputStream(); out.write(buffer); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } finally { try {if (fileInputStream != null) { fileInputStream.close();}if (fis != null) { fis.close();}if (out != null) { out.close();} } catch (IOException e) {e.printStackTrace(); } } // 刪除中間文件 if (srcFile != null) { System.out.println(FileDownloadUtil.deleteFile(srcFile)); } }

因為是GET請求,所以直接拼接接口路由+參數,用瀏覽器打開就能彈出下載。

至此單張圖片下載接口結束。

多張圖片打包下載

Controller層接口:

/** * 圖片打包下載 */ @ApiImplicitParams({ @ApiImplicitParam(name = 'urls', value = '圖片url列表', required = true, dataType = 'List', paramType = 'query'), }) @ApiOperation(value = '圖片打包下載', notes = '圖片打包下載') @RequestMapping(value = '/downloadPictureList', method = RequestMethod.GET) public void downloadPictureList(List urls) { List<String> fileNameList = new ArrayList<>(); for (int i = 0; i < urls.size(); i++) { // 獲取文件名 fileNameList.add(StringUtils.substringAfterLast(urls.get(i), '/')); // 拼接完整圖片路徑 urls.set(i, DOMAIN + urls.get(i)); } // 獲取當前類的所在項目路徑 File directory = new File(''); String courseFile; String srcPath; File srcFile = null; // 要打包的文件列表 List<File> fileList = new ArrayList<>(); ZipOutputStream zos = null; OutputStream out = null; try { courseFile = directory.getCanonicalPath(); // 下載文件 for (int i = 0; i < urls.size(); i++) {String fileName = '' + fileNameList.get(i);FileDownloadUtil.downloadHttpUrl(urls.get(i), courseFile, fileName);srcPath = courseFile + fileName;srcFile = new File(srcPath);fileList.add(srcFile); } long start = System.currentTimeMillis(); response.setContentType('application/x-zip-compressed'); response.setHeader('Content-disposition', 'attachment;filename=' + StringUtil.getUUID() + '.zip'); out = response.getOutputStream(); zos = new ZipOutputStream(out); for (File file : fileList) {byte[] buf = new byte[BUFFER_SIZE];zos.putNextEntry(new ZipEntry(file.getName()));int len;FileInputStream in = new FileInputStream(file);while ((len = in.read(buf)) != -1) { zos.write(buf, 0, len);}zos.closeEntry();in.close(); } long end = System.currentTimeMillis(); System.out.println('壓縮完成,耗時:' + (end - start) + ' ms'); out.flush(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) {throw new RuntimeException('zip error from ZipUtils', e); } finally { if (zos != null) {try { zos.close();} catch (IOException e) { e.printStackTrace();} } if (out != null) {try { zos.close();} catch (IOException e) { e.printStackTrace();} } } // 刪除中間文件 if (fileList != null) { for (File file : fileList) {System.out.println(FileDownloadUtil.deleteFile(file)); } } }

同樣是GET請求,所以也是拼接接口路由+參數,用瀏覽器打開就能彈出下載。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
夜夜嗨网站十八久久| 精品视频在线一区二区在线| 久久香蕉网站| 国产91在线播放精品| 成人综合一区| 久久久成人网| 免费久久精品| 亚洲网址在线观看| 国产亚洲观看| 中文字幕高清在线播放| 色婷婷久久久| 婷婷成人在线| 亚洲精品小说| 蜜桃久久久久久久| 日韩成人精品一区二区三区 | 国产麻豆一区二区三区精品视频| 欧美日韩一区二区国产| 麻豆精品久久久| 国产伦久视频在线观看| 国产精品88久久久久久| 一区二区三区四区精品视频| 欧美久久香蕉| 国产福利片在线观看| 日韩精品一二区| 日本午夜精品久久久| 国产日韩高清一区二区三区在线| 你懂的国产精品| 亚洲香蕉网站| 国产精品va视频| 午夜欧美精品| 久久99影视| 免费日本视频一区| 国产精品精品| 亚洲精品乱码| 色偷偷色偷偷色偷偷在线视频| 亚洲欧洲另类| 久久影院一区二区三区| 国产视频一区三区| av资源中文在线天堂| 国产精品毛片在线| 国产精品超碰| 欧美日韩三区| 老司机精品视频网| 97精品久久| 美女91精品| 自由日本语亚洲人高潮| 国产精品亚洲二区| 丝袜美腿高跟呻吟高潮一区| 久久只有精品| 青青草伊人久久| 久久亚洲风情| 日韩精品一区二区三区免费观影| 国产精品久久久网站| 亚洲精品韩国| 蜜臀a∨国产成人精品| 群体交乱之放荡娇妻一区二区| 欧美一区91| 少妇精品在线| 日韩激情精品| 日韩av中文字幕一区| 亚洲人成亚洲精品| 中文字幕日韩亚洲| 中文字幕成人| 欧美一区影院| 麻豆极品一区二区三区| 另类欧美日韩国产在线| 美女视频一区在线观看| 精品国产精品久久一区免费式| 国产精品mm| 麻豆精品蜜桃| 中文字幕系列一区| 亚洲欧美日韩一区在线观看| 久久高清免费观看| 日日夜夜免费精品视频| 国产精品亲子伦av一区二区三区| 麻豆一区二区三| 99久久久久久中文字幕一区| 欧美久久精品一级c片| 亚洲美女91| 欧美91在线| 欧美精品一卡| 欧美日韩一区二区三区四区在线观看 | 日韩综合一区二区| 视频在线观看国产精品| 亚洲a成人v| 精品国产乱码久久久久久1区2匹| 日韩国产一区| 日韩中文字幕区一区有砖一区| 欧美亚洲福利| 久久视频国产| 日日夜夜免费精品视频| 国产夫妻在线| 天海翼精品一区二区三区| 久久av免费| 91久久亚洲| 大香伊人久久精品一区二区| 欧美日韩国产一区精品一区| 久久av国产紧身裤| 国产美女高潮在线| 免费欧美在线视频| 桃色av一区二区| 日本视频在线一区| 激情综合网五月| 久久99精品久久久久久园产越南| 亚洲综合电影一区二区三区| 国产一区一一区高清不卡| 亚州欧美在线| 99视频一区| 欧美丝袜一区| 中文在线中文资源| 欧美国产日本| 日韩精品免费一区二区夜夜嗨| 久久久久国产精品一区二区| 日本成人在线网站| 国产高清久久| 99精品视频在线观看免费播放| 国产精品一页| 亚洲精品极品| 日韩专区在线视频| 欧美.日韩.国产.一区.二区| 欧美丰满日韩| 亚洲午夜天堂| 精品国产美女a久久9999| 国产精品久久久久久久久久齐齐| 日韩二区三区在线观看| 日本不卡视频在线| 日本在线视频一区二区| 亚洲精品无吗| 免费黄网站欧美| 亚洲欧美视频| 黄色成人在线网址| 视频在线观看一区二区三区| 亚洲影视一区| 日韩激情中文字幕| 欧美日一区二区在线观看| 国产精品videossex久久发布 | 青草国产精品久久久久久| 日本欧美在线看| av亚洲在线观看| 亚洲一区二区三区中文字幕在线观看 | 国产精品调教视频| 国产精品蜜芽在线观看| 久久黄色影院| 久久www成人_看片免费不卡| 亚洲精品九九| 国产精品videossex| 中文字幕一区久| 尤物在线精品| 91欧美极品| 日本综合字幕| 免费久久99精品国产| 亚洲精品国产精品粉嫩| 欧美成人一二区| 亚洲精品成人| 国产精品视频一区二区三区综合| 久久uomeier| 中文字幕一区二区三区四区久久 | 亚洲一区网站| 你懂的亚洲视频| 成人高清一区| 久久一区二区三区喷水| 香蕉久久夜色精品国产| 狠狠爱www人成狠狠爱综合网| 国产精品密蕾丝视频下载| 日韩一级网站| 99精品电影| 九色porny丨国产首页在线| 精品国产亚洲一区二区三区在线| 亚洲婷婷丁香| 亚洲我射av| 一区二区精彩视频| 免费不卡在线观看| 中文字幕一区二区三区四区久久 | 精品1区2区3区4区| 里番精品3d一二三区| 日韩成人一级| 国产麻豆一区| 国产乱论精品| 麻豆精品少妇| 91日韩免费| 97精品一区二区| 亚洲福利久久| 国产精品腿扒开做爽爽爽挤奶网站| 狠狠爱成人网| 日韩欧美三区| 久久亚洲美女| 日韩精品一级| 日韩av在线免费观看不卡| 成人高清一区| av亚洲一区二区三区| 六月天综合网| 国产欧美日韩一级| 国产福利片在线观看| 在线国产一区| 青青草伊人久久| 在线人成日本视频| 玖玖玖国产精品| 美女视频一区在线观看| 女生影院久久| 亚洲免费中文|