麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JSP > 正文

Spring MVC的文件下載實例詳解

2024-09-05 00:23:02
字體:
來源:轉載
供稿:網友

Spring MVC的文件下載實例詳解

讀取文件

要下載文件,首先是將文件內容讀取進來,使用字節(jié)數組存儲起來,這里使用spring里面的工具類實現

import org.springframework.util.FileCopyUtils;  public byte[] downloadFile(String fileName) {    byte[] res = new byte[0];    try {      File file = new File(BACKUP_FILE_PATH, fileName);      if (file.exists() && !file.isDirectory()) {        res = FileCopyUtils.copyToByteArray(file);      }    } catch (IOException e) {      logger.error(e.getMessage());    }    return res;  }

這個數組就是文件的內容,后面將輸出到響應,供瀏覽器下載

下載文件的響應

下載文件的響應頭和一般的響應頭是有所區(qū)別的,而這里面還要根據用戶瀏覽器的不同區(qū)別對待

我把生成響應的代碼封裝成了一個方法,這樣所有下載響應都可以調用這個方法了,避免重復代碼到處寫

 protected ResponseEntity<byte[]> downloadResponse(byte[] body, String fileName) {    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder        .getRequestAttributes()).getRequest();    String header = request.getHeader("User-Agent").toUpperCase();    HttpStatus status = HttpStatus.CREATED;    try {      if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {        fileName = URLEncoder.encode(fileName, "UTF-8");        fileName = fileName.replace("+", "%20");  // IE下載文件名空格變+號問題        status = HttpStatus.OK;      } else {        fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");      }    } catch (UnsupportedEncodingException e) {}    HttpHeaders headers = new HttpHeaders();    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    headers.setContentDispositionFormData("attachment", fileName);    headers.setContentLength(body.length);    return new ResponseEntity<byte[]>(body, headers, status);  }

這里需要注意,一般來說下載文件是使用201狀態(tài)碼的,但是IE瀏覽器不支持,還得我花了很大力氣才找出來是那個問題

其中對文件名的處理是為了防止中文以及空格導致文件名亂碼

控制器方法

在控制器的那里需要對返回值進行處理

@RequestMapping(value = "/download-backup", method = RequestMethod.GET)  @ResponseBody  public ResponseEntity<byte[]> downloadBackupFile(@RequestParam String fileName) {    byte[] body = backupService.downloadFile(fileName);    return downloadResponse(body, fileName);  } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品免费视频观看 | 久久国产一级片 | 91精品国产777在线观看 | 日本在线播放一区二区 | 久久伊人国产精品 | 99精品视频在线观看免费 | 国产午夜精品一区二区三区免费 | 少妇的肉体的满足毛片 | 得得啪在线 | 国产xxxx免费 | 一级电影免费看 | 国产精品成人久久 | 国产毛片视频 | 欧美3p激情一区二区三区猛视频 | 全黄裸片武则天一级第4季 偿还电影免费看 | 国产精品一区二区三区在线看 | 亚洲欧美日韩久久精品第一区 | 国产成人精品一区二区仙踪林 | 视频一区免费观看 | 萌白酱福利视频在线网站 | 国产精品成人久久久久a级 欧美特黄一级高清免费的香蕉 | 色淫网站免费视频 | 国产中文一区 | 久久华人 | 日日草夜夜操 | 久久亚洲精品久久国产一区二区 | 羞羞视频免费观看入口 | 羞羞视频免费网站 | 亚洲精品一区二区三区免 | 成人福利在线看 | 国产毛片aaa一区二区三区视频 | 成人男女啪啪免费观看网站四虎 | 国产精品99久久久久久宅女 | 欧美成年人视频在线观看 | 久久久国产一区二区三区 | 成人在线视频精品 | 高颜值美女啪啪 | 成人三级电影网 | 免费一级片网站 | 色视频一区二区 | 国产免费视频一区二区裸体 |