SPRINGBOOT实现生成一个下载链接(可加密)
spring生成一个普通下载链接
由于工作需要,要做一个能够提供给用户的下载链接,使用户可以直接下载从服务器上直接下载文件,由于有多个用户,所以不能让别人看到彼此的路径,进行了加密处理
Controller层代码
项目搭建这里直接省去,可以直接看controller代码
/**
/**
* @param 文件名称
* @param 文件路径
* @return
*/
@RequestMapping(value = "Zip/DownUrl", method = RequestMethod.GET, produces ="application/json;charset=UTF-8")
@ResponseBody
public Object downZip(@RequestParam(value="company",required = true)String company,
@RequestParam(value="path",required = true)String path){
ResponseEntity<InputStreamResource> response = null;
EncryptionInfo encry = new EncryptionInfo();
String companyname = encry.decodeBack(company);
String filepath = encry.decodeBack(path);
logger.info(companyname+"开始下载,下载路径:"+filepath);
try {
response = ExcelUtil.download(filepath, companyname, companyname);
} catch (Exception e) {
logger.error("下载文件失败");
}
return response;
}
只需要传入文件的绝对路径和文件名称外部调用即可
EncryptionInfo加密代码
package com.example.excelutil;
import java.io.UnsupportedEncodingException;
public class EncryptionInfo {
/**
* 十六进制转中文字符串
*/
public static String decodeBack(String str) {
if ( str == null ) {
return "转换失败"