您好,登錄后才能下訂單哦!
這篇文章跟大家分析一下“springmvc中下載中文文件名稱為下劃線的解決方法”。內(nèi)容詳細易懂,對“springmvc中下載中文文件名稱為下劃線的解決方法”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭?。下面跟著小編一起深入學(xué)習(xí)“springmvc中下載中文文件名稱為下劃線的解決方法”的知識吧。
springboot項目中,在下載文件的時候,通過封裝ResponseEntity,將文件流寫入body,這種下載文件的方式,造成了下載的文件名為正文顯示為下劃線的形式;
直接將輸入的文件名的編碼格式定義成GBK格式;
如下代碼
public static ResponseEntity<FileSystemResource> export(File file) throws UnsupportedEncodingException { if (file == null) { return null; } //這個位置對文件名進行編碼 String fileName = new String (file.getName().getBytes("GBK"),"ISO-8859-1"); HttpHeaders headers = new HttpHeaders(); headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); headers.add("Content-Disposition", "attachment; filename=" +fileName); headers.add("Pragma", "no-cache"); headers.add("Expires", "0"); headers.add("Last-Modified", new Date().toString()); headers.add("ETag", String.valueOf(System.currentTimeMillis())); return ResponseEntity .ok() .headers(headers) .contentLength(file.length()) .contentType(MediaType.parseMediaType("application/octet-stream")) .body(new FileSystemResource(file)); }
public static void exportToExcel(String uid, String name, String htmlText, HttpServletRequest request, HttpServletResponse response) { htmlText = htmlText.replaceFirst("<table>", "<tableFirst>"); htmlText = htmlText.replaceAll("<table>", "<table cellpadding=\"3\" cellspacing=\"0\" border=\"1\" rull=\"all\" style=\"border-collapse: collapse\">"); htmlText = htmlText.replaceFirst("<tableFirst>", "<table>"); try (OutputStream out = response.getOutputStream()) { String fileName = name+ "_" + DateUtils.getNow("yyyyMMddHHmmss"); // fileName = new String(fileName.getBytes(),"utf-8")+ ".xls"; if ("large".equals(htmlText)) { ReportingPo report = reportingService.getByUid(uid); Map<String, Object> formParameters = generationService.getFormParameters(request.getParameterMap(), report.getDataRange()); ReportTable reportTable = generationService.getReportTable(report, formParameters); htmlText = reportTable.getHtmlText(); } // response.reset(); response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"),"iso-8859-1")+ ".xls"); // response.setHeader("Content-Disposition", String.format("attachment; filename=%s", fileName)); response.setContentType("application/vnd.ms-excel; charset=utf-8"); response.setCharacterEncoding("utf-8"); response.addCookie(new Cookie("fileDownload", "true")); // out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }); // 生成帶bom的utf8文件 out.write(htmlText.getBytes("utf-8")); out.flush(); } catch (Exception ex) { throw new RuntimeException(ex); } }
new String(fileName.getBytes("utf-8"),"iso-8859-1")+ ".xls"
關(guān)于springmvc中下載中文文件名稱為下劃線的解決方法就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。