SpringBoot下載Excel文件,解決文件損壞問題


@RequestMapping(value = "dowlondTemplateFile")
public ResponseEntity<byte[]> getFile(HttpServletResponse response) throws IOException {
String fileName = "合同歷史模板.xlsx";
ClassPathResource resource = new ClassPathResource("static" + File.separator + "templateFile" + File.separator + fileName);
try {
File file = resource.getFile();
//下載文件路徑
if (file.exists()) {
if (SecurityUtil.getOnlineUser() != null) {
LogUtil.info(SecurityUtil.getOnlineUser().getId(), SecurityUtil.getOnlineUser().getName(),
"下載文件", "成功",
"下載文件,id", "");
}
HttpHeaders headers = new HttpHeaders();
//下載顯示的文件名,解決中文名稱亂碼問題
String downloadFileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
//通知瀏覽器以attachment(下載方式)打開圖片
headers.setContentDispositionFormData("attachment", downloadFileName);
//application/octet-stream : 二進制流數據(最常見的文件下載)。
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<>(FileUtils.readFileToByteArray(file),
headers, HttpStatus.CREATED);
} else {
throw new FileNotExistException();
}
} catch (IOException e) {
return null;
}
}


解決 pom中加入如下 這個插件可以避免xlsx文件在resource目錄下被自動壓縮,這樣就可以正常下載,打開了
              <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<version>2.6</version>
				<artifactId>maven-resources-plugin</artifactId>
				<configuration>
					<encoding>UTF-8</encoding>
					<nonFilteredFileExtensions>
						<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
					</nonFilteredFileExtensions>
				</configuration>
			</plugin>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM