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

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

Java后臺(tái)Controller實(shí)現(xiàn)文件下載操作

瀏覽:36日期:2022-08-23 10:12:47

代碼

參數(shù):

1.filePath:文件的絕對(duì)路徑(d:downloada.xlsx)

2.fileName(a.xlsx)

3.編碼格式(GBK)

4.response、request不介紹了,從控制器傳入的http對(duì)象

代碼片.

//控制器@RequestMapping(UrlConstants.BLACKLIST_TESTDOWNLOAD)public void downLoad(String filePath, HttpServletResponse response, HttpServletRequest request) throws Exception { boolean is = myDownLoad('D:a.xlsx','a.xlsx','GBK',response,request); if(is) System.out.println('成功'); else System.out.println('失敗'); }//下載方法public boolean myDownLoad(String filePath,String fileName, String encoding, HttpServletResponse response, HttpServletRequest request){ File f = new File(filePath); if (!f.exists()) { try {response.sendError(404, 'File not found!'); } catch (IOException e) {e.printStackTrace(); } return false; } String type = fileName.substring(fileName.lastIndexOf('.') + 1); //判斷下載類(lèi)型 xlsx 或 xls 現(xiàn)在只實(shí)現(xiàn)了xlsx、xls兩個(gè)類(lèi)型的文件下載 if (type.equalsIgnoreCase('xlsx') || type.equalsIgnoreCase('xls')){ response.setContentType('application/force-download;charset=UTF-8'); final String userAgent = request.getHeader('USER-AGENT'); try {if (StringUtils.contains(userAgent, 'MSIE') || StringUtils.contains(userAgent, 'Edge')) {// IE瀏覽器 fileName = URLEncoder.encode(fileName, 'UTF8');} else if (StringUtils.contains(userAgent, 'Mozilla')) {// google,火狐瀏覽器 fileName = new String(fileName.getBytes(), 'ISO8859-1');} else { fileName = URLEncoder.encode(fileName, 'UTF8');// 其他瀏覽器}response.setHeader('Content-disposition', 'attachment; filename=' + fileName); } catch (UnsupportedEncodingException e) {logger.error(e.getMessage(), e);return false; } InputStream in = null; OutputStream out = null; try {//獲取要下載的文件輸入流in = new FileInputStream(filePath);int len = 0;//創(chuàng)建數(shù)據(jù)緩沖區(qū)byte[] buffer = new byte[1024];//通過(guò)response對(duì)象獲取outputStream流out = response.getOutputStream();//將FileInputStream流寫(xiě)入到buffer緩沖區(qū)while((len = in.read(buffer)) > 0) { //使用OutputStream將緩沖區(qū)的數(shù)據(jù)輸出到瀏覽器 out.write(buffer,0,len);}//這一步走完,將文件傳入OutputStream中后,頁(yè)面就會(huì)彈出下載框 } catch (Exception e) {logger.error(e.getMessage(), e);return false; } finally {try { if (out != null) out.close(); if(in!=null) in.close();} catch (IOException e) { logger.error(e.getMessage(), e);} } return true; }else { logger.error('不支持的下載類(lèi)型!'); return false; } }

實(shí)現(xiàn)效果

1.火狐瀏覽器效果

Java后臺(tái)Controller實(shí)現(xiàn)文件下載操作

2.chrome效果,自動(dòng)下載

Java后臺(tái)Controller實(shí)現(xiàn)文件下載操作

補(bǔ)充知識(shí):文件上傳/下載的幾種寫(xiě)法(java后端)

文件上傳

1、框架已經(jīng)幫你獲取到文件對(duì)象File了

public boolean uploadFileToLocale(File uploadFile,String filePath) { boolean ret_bl = false; try { InputStream in = new FileInputStream(uploadFile); ret_bl=copyFile(in,filePath); } catch (Exception e) { e.printStackTrace(); } return ret_bl; } public boolean copyFile(InputStream in,String filePath) { boolean ret_bl = false; FileOutputStream os=null; try { os = new FileOutputStream(filePath,false); byte[] b = new byte[8 * 1024]; int length = 0; while ((length = in.read(b)) > 0) {os.write(b, 0, length); } os.close(); in.close(); ret_bl = true; } catch (Exception e) { e.printStackTrace(); }finally{ try { if(os!=null){ os.close(); } if(in!=null){ in.close(); } } catch (IOException e) { e.printStackTrace();}} return ret_bl; }}

2、天了個(gè)擼,SB架構(gòu)師根本就飄在天空沒(méi)下來(lái),根本就沒(méi)想文件上傳這一回事

public String uploadByHttp(HttpServletRequest request) throws Exception{ String filePath=null; List<String> fileNames = new ArrayList<>(); //創(chuàng)建一個(gè)通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); //判斷 request 是否有文件上傳,即多部分請(qǐng)求 if(multipartResolver.isMultipart(request)){//轉(zhuǎn)換成多部分request MultipartHttpServletRequest multiRequest =multipartResolver.resolveMultipart(request); MultiValueMap<String,MultipartFile> multiFileMap = multiRequest.getMultiFileMap();List<MultipartFile> fileSet = new LinkedList<>();for(Entry<String, List<MultipartFile>> temp : multiFileMap.entrySet()){ fileSet = temp.getValue();}String rootPath=System.getProperty('user.dir');for(MultipartFile temp : fileSet){ filePath=rootPath+'/tem/'+temp.getOriginalFilename(); File file = new File(filePath); if(!file.exists()){ file.mkdirs(); } fileNames.add(temp.getOriginalFilename()); temp.transferTo(file);} } }

3、神啊,我正在擼框架,請(qǐng)問(wèn)HttpServletRequest怎么獲取!!!!

(1)在web.xml中配置一個(gè)監(jiān)聽(tīng)

<listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener>

(2)HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

文件下載(直接用鏈接下載的不算),這比較簡(jiǎn)單

1、本地文件下載(即文件保存在本地)

public void fileDownLoad(HttpServletRequest request,HttpServletResponse response,String fileName,String filePath) throws Exception { response.setCharacterEncoding('UTF-8'); //設(shè)置ContentType字段值 response.setContentType('text/html;charset=utf-8'); //通知瀏覽器以下載的方式打開(kāi) response.addHeader('Content-type', 'appllication/octet-stream'); response.addHeader('Content-Disposition', 'attachment;filename='+fileName); //通知文件流讀取文件 InputStream in = request.getServletContext().getResourceAsStream(filePath); //獲取response對(duì)象的輸出流 OutputStream out = response.getOutputStream(); byte[] buffer = new byte[1024]; int len; //循環(huán)取出流中的數(shù)據(jù) while((len = in.read(buffer)) != -1){ out.write(buffer,0,len); } }

2、遠(yuǎn)程文件下載(即網(wǎng)上資源下載,只知道文件URI)

public static void downLoadFromUrl(String urlStr,String fileName,HttpServletResponse response){ try { urlStr=urlStr.replaceAll('', '/'); URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //設(shè)置超時(shí)間為3秒 conn.setConnectTimeout(3*1000); //防止屏蔽程序抓取而返回403錯(cuò)誤 conn.setRequestProperty('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)');//得到輸入流 InputStream inputStream = conn.getInputStream(); response.reset();response.setContentType('application/octet-stream; charset=utf-8'); response.setHeader('Content-Disposition', 'attachment; filename=' + new String(fileName.getBytes('GBK'),'ISO8859_1'));//獲取響應(yīng)報(bào)文輸出流對(duì)象 //獲取response對(duì)象的輸出流 OutputStream out = response.getOutputStream(); byte[] buffer = new byte[1024]; int len; //循環(huán)取出流中的數(shù)據(jù) while((len = in.read(buffer)) != -1){ out.write(buffer,0,len); } } catch (Exception e) { e.printStackTrace(); } }

以上這篇Java后臺(tái)Controller實(shí)現(xiàn)文件下載操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩高清成人| 99久久精品国产亚洲精品| 日韩一区二区在线免费| 日本激情一区| 欧美xxxx中国| 成人在线免费观看91| 精品国产网站| 国产成人1区| 亚洲精品**中文毛片| 国产91在线精品| 久久久久久色 | 日韩成人a**站| 97精品国产| 国产欧洲在线| 91精品国产成人观看| 激情久久中文字幕| 性欧美69xoxoxoxo| 老牛国产精品一区的观看方式| 国产精品三上| 亚洲午夜免费| 国产调教精品| 欧美中文一区| 国产日韩一区| 久久中文欧美| 日韩在线欧美| 99国产一区| 日韩不卡一区二区| 麻豆一区在线| 桃色一区二区| aⅴ色国产欧美| 日韩精品三级| 久久69成人| 99精品在线观看| 午夜在线一区二区| 日韩精品欧美大片| 久久精品亚洲| 激情综合网五月| 午夜在线视频观看日韩17c| 一区二区精品| 麻豆精品在线| 欧美不卡高清| 亚洲tv在线| 久久精品国产久精国产爱| 色婷婷狠狠五月综合天色拍| 水野朝阳av一区二区三区| 国产午夜一区| 蜜桃成人精品| 亚洲天堂av资源在线观看| 久久av资源| 久久国产中文字幕| 欧美日韩精品一区二区三区视频 | 日韩视频在线一区二区三区 | 亚洲人成网站在线在线观看| 狠狠久久伊人中文字幕| 2023国产精品久久久精品双| 亚洲日韩视频| 精品视频一区二区三区四区五区| 日韩一级欧洲| 国产丝袜一区| 国产精品毛片| 国产精品3区| 欧美性感美女一区二区| 亚洲精品乱码日韩| 国产成人免费| 欧美日韩国产在线一区| 日韩专区视频网站| 色88888久久久久久影院| 午夜在线播放视频欧美| 91九色综合| 成人国产精品久久| 国产专区一区| 国产亚洲字幕| 婷婷久久一区| 国产精品theporn| 综合亚洲色图| 日韩精品dvd| 免费看欧美美女黄的网站| 精品日本视频| 美美哒免费高清在线观看视频一区二区 | 久久中文字幕一区二区| 91久久国产| 欧美日本一区| 99久久九九| 国产精选久久| 欧美日韩国产综合网| 国产精品久久久网站| 日韩一区二区三区免费播放| 欧美日韩亚洲一区| 播放一区二区| 欧美在线不卡| 欧美/亚洲一区| 国产日产精品一区二区三区四区的观看方式| 日本美女一区| 欧美另类中文字幕| 激情综合激情| 欧美成人精品午夜一区二区| 国产亚洲精品自拍| 国产日韩欧美中文在线| 国产精选在线| 国产精品欧美一区二区三区不卡| 亚洲欧美日韩高清在线| 麻豆免费精品视频| 午夜亚洲精品| 成人午夜国产| 精品免费av一区二区三区| 亚洲精品四区| 99国内精品| 欧美一区二区三区久久精品| 亚洲手机视频| 成午夜精品一区二区三区软件| 97精品资源在线观看| 亚洲精品中文字幕乱码| 国产精久久久| 婷婷精品在线| 亚洲理论在线| 伊人久久婷婷| 久久91导航| 精品午夜av| 国产精品免费精品自在线观看| 久久亚洲电影| 亚洲精品一区二区在线看| 91综合视频| 精品理论电影在线| 日韩av网站免费在线| 久久国产精品毛片| 国产专区一区| 久久久五月天| 久久字幕精品一区| 日韩av午夜在线观看| 久热综合在线亚洲精品| 亚洲福利久久| 欧美精品一线| 欧美在线资源| 久久久国产亚洲精品| 国产精品国产一区| 精品一区二区三区的国产在线观看 | 国产亚洲精品精品国产亚洲综合| 中文一区一区三区免费在线观 | 国产精品高清一区二区| 日韩精品国产精品| 亚洲精品福利| 男女激情视频一区| 日韩av网站在线免费观看| 亚洲精选av| 99香蕉国产精品偷在线观看| 欧美日韩色图| 欧美a级片一区| 国产精品88久久久久久| 欧美三级网址| 久久久噜噜噜| 88xx成人免费观看视频库| 国产va在线视频| 国产欧美日韩免费观看| 国产情侣久久| 国产精品乱战久久久| 久久不卡日韩美女| 国产成人调教视频在线观看| 91青青国产在线观看精品| 麻豆国产精品| 久久精品国产久精国产| 成人台湾亚洲精品一区二区| 亚洲欧美一区在线| 日韩精品一级中文字幕精品视频免费观看 | 久久a爱视频| 国内一区二区三区| 国产aⅴ精品一区二区三区久久| 中文在线а√在线8| 国内精品伊人| 欧美日一区二区三区在线观看国产免 | 国产va免费精品观看精品视频| 国产不卡一区| 久久在线免费| 日韩一区精品字幕| 欧美亚洲人成在线| 久久不见久久见国语| 日本久久综合| 免费美女久久99| 久久精品av麻豆的观看方式| 久久三级中文| 在线视频观看日韩| 亚洲理论在线| 精品视频国产| 欧美jjzz| 亚洲视频播放| 久久最新视频| 国产日韩欧美一区二区三区 | 97人人精品| 欧美日韩国产一区精品一区| 最新亚洲国产| 久久gogo国模啪啪裸体| 久久男人av资源站| 亚洲一级在线| 欧美日韩一区二区三区四区在线观看| 久久影院资源站| 日韩综合精品| 亚洲一二av| 国产suv精品一区二区四区视频| 蜜臀av免费一区二区三区| 亚洲狼人精品一区二区三区| 精品日韩一区|