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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

現(xiàn)有一些圖片在服務(wù)器上的鏈接,在瀏覽器中打開(kāi)這些鏈接是直接顯示在瀏覽器頁(yè)面的形式。

現(xiàn)在需要生成這些圖片的單獨(dú)下載以及打包下載鏈接,即在瀏覽器中打開(kāi)下載鏈接后彈出下載框提示下載。由于前端存在跨域問(wèn)題,所以圖片下載由后臺(tái)接口完成。

首先編寫(xiě)文件下載工具類(lèi):

import java.net.URL;import java.net.MalformedURLException;import org.apache.commons.io.FileUtils;public class FileDownloadUtil {/** * 下載文件---返回下載后的文件存儲(chǔ)路徑 * * @param url 文件路徑 * @param dir 目標(biāo)存儲(chǔ)目錄 * @param fileName 存儲(chǔ)文件名 * @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) {// 拼接完整圖片路徑。這里填寫(xiě)圖片鏈接 String urlPath = ''; // 獲取圖片文件后綴名 String postfix = '.' + StringUtils.substringAfterLast(url, '.'); // 獲取當(dāng)前類(lèi)的所在項(xiàng)目路徑 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)); } }

因?yàn)槭荊ET請(qǐng)求,所以直接拼接接口路由+參數(shù),用瀏覽器打開(kāi)就能彈出下載。

至此單張圖片下載接口結(jié)束。

多張圖片打包下載

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)); } // 獲取當(dāng)前類(lèi)的所在項(xiàng)目路徑 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('壓縮完成,耗時(shí):' + (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請(qǐng)求,所以也是拼接接口路由+參數(shù),用瀏覽器打開(kāi)就能彈出下載。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区国产| 国产精品毛片久久久| 日本少妇一区二区| 国产精品呻吟| 免费一区二区三区在线视频| 在线免费观看亚洲| 日韩视频精品在线观看| 日本久久成人网| 欧美久久香蕉| 亚洲a成人v| 亚洲制服欧美另类| 香蕉成人久久| 国产婷婷精品| 亚洲一区欧美激情| 国产亚洲在线| 久久xxxx精品视频| 久久国产福利| 一区二区高清| 老司机精品久久| 国产中文在线播放| 欧美丰满日韩| 精品视频网站| 麻豆精品久久| 成人国产精品一区二区网站| 成人午夜网址| 亚洲欧洲美洲av| 国产v日韩v欧美v| 久久影院午夜精品| 日韩理论视频| 亚洲午夜久久久久久尤物| 免费视频一区三区| 不卡一区2区| 久久亚洲国产| 在线亚洲观看| 麻豆精品91| 日本午夜免费一区二区| 国产精品qvod| 国产在线一区不卡| 久久精品成人| 日韩一区二区免费看| 最新国产精品| 麻豆精品视频在线观看| 久久久久久一区二区| 麻豆成全视频免费观看在线看| 日韩国产一区二区| 亚洲一区成人| 国产精品久久| 99久久久久久中文字幕一区| 亚洲另类黄色| sm久久捆绑调教精品一区| 日韩黄色av| 亚洲欧美网站| 蜜臀久久精品| 国产精品sss在线观看av| 国产亚洲欧洲| 桃色一区二区| 精品视频一区二区三区在线观看 | 亚洲97av| 999国产精品| 久久精品一区| 国产乱码精品一区二区亚洲| 视频精品一区二区| 香蕉精品视频在线观看| 成人在线免费观看91| 日韩av在线播放中文字幕| 欧美特黄视频| 欧美亚洲在线日韩| 日韩中文字幕高清在线观看| 精品深夜福利视频| 久久精品一区二区国产| 欧美日韩精品一区二区三区在线观看| 视频一区视频二区中文字幕| 韩日一区二区三区| 日韩欧美二区| 成人片免费看| a日韩av网址| 亚洲精品**中文毛片| 福利一区二区三区视频在线观看| 国产精品极品在线观看| 欧美日本二区| 久久激情五月婷婷| 国产亚洲人成a在线v网站| 日韩国产在线观看| 亚洲欧美在线综合| 日本亚州欧洲精品不卡| 日韩二区在线观看| 欧美日韩调教| 国产精品一区二区精品视频观看| 中文字幕免费精品| 少妇精品在线| 久久国产精品免费精品3p| 国产精品尤物| 免费一区二区三区在线视频| 久久精品国产在热久久| 色综合五月天| 麻豆精品蜜桃| 1024精品久久久久久久久| 亚洲精品1区| 中文精品电影| 日韩三区四区| 欧美xxxx性| a日韩av网址| 黄色国产精品| 美女被久久久| 日韩欧美中文字幕一区二区三区| 欧美亚洲免费| 精品精品99| 一区二区三区视频免费观看| 亚洲欧美日本国产专区一区| 亚洲色图综合| 国产精品极品国产中出| 成人在线免费观看网站| 999国产精品视频| 亚洲午夜av| 日韩在线一区二区| 日韩av在线播放中文字幕| 国产欧美自拍| 91亚洲成人| 宅男在线一区| 亚洲a级精品| 欧美成人精品一级| 天堂√中文最新版在线| 免费视频亚洲| 日本不卡一二三区黄网| 麻豆精品久久| 亚洲激情国产| 国产精品黄色| 婷婷中文字幕一区| 91精品日本| 91精品国产乱码久久久久久久| 免费看黄色91| 国产精品国产一区| aa亚洲婷婷| 欧美午夜三级| 久久精品官网| 欧美日韩a区| 99久久久国产精品美女| 日本亚洲不卡| 群体交乱之放荡娇妻一区二区| 亚洲乱码视频| 欧美片第1页| 97久久超碰| 欧洲激情综合| 精品久久免费| 日韩视频一二区| 激情欧美一区二区三区| 国产精品激情| 蜜桃av一区二区三区电影| 久久精品一区| 综合一区av| 美女毛片一区二区三区四区| 欧美极品中文字幕| 亚洲乱码久久| 狠狠爱www人成狠狠爱综合网| 激情综合婷婷| 91午夜精品| 丝袜美腿亚洲色图| 99精品综合| 水蜜桃精品av一区二区| 91精品国产自产精品男人的天堂| 欧美 日韩 国产一区二区在线视频 | 麻豆精品在线观看| 午夜亚洲福利在线老司机| www.九色在线| 欧美国产视频| 涩涩涩久久久成人精品| 亚洲精品va| 日韩中文在线电影| 美女久久久久久| 欧美一区成人| 蜜臀va亚洲va欧美va天堂| 日韩欧美国产精品综合嫩v| 国产探花一区| 最近国产精品视频| 99国产精品| 免费观看不卡av| 日韩欧美视频专区| 麻豆一区二区在线| 日韩有吗在线观看| 免费精品视频最新在线| 欧美日韩中文一区二区| 欧美日韩在线观看首页| 久久精品一区| 国产精品jk白丝蜜臀av小说| 亚洲精品观看| 一区二区国产精品| 国产综合色产| 国产91精品对白在线播放| 精品国产精品久久一区免费式| 日韩精品久久理论片| 热久久免费视频| 99re国产精品| 日韩午夜黄色| 一区在线免费观看| 九一成人免费视频| 激情久久中文字幕| 偷拍欧美精品| 国产婷婷精品| 蜜臀久久99精品久久久画质超高清| 中文精品视频|