@GetMapping("/down")
@ResponseBody
public RestResponse down(HttpServletRequest request ) {
try {
System.out.println("downstart");
String wayRoad = "阿里云文件路径";
String zipName = "AAAA" + System.currentTimeMillis();
String aaa = getOssFile111(wayRoad, zipName, request
);
return RestResponse.success().setData(aaa);
} catch (Exception e) {
e.printStackTrace();
}
return RestResponse.failure("失败了,嘤嘤嘤!");
}
public String getOssFile111(String key, String zipName,
HttpServletRequest request) {
String fileOssEndpoint = "自己的OssEndpoint ";
String fileOssKeyId = "自己的OssKeyId ";
String fileOssKeySecret = "自己的OssKeySecret";
String fileOssDir = "自己的OssDir";
String fileOssBucketName = "自己的OssBucketName";
String fileOssBasePath = "";
String ip = GetIpUtil.getLocalIP();
// 获取端口号
String port = request.getLocalPort() + "";
// 服务器ip
String localip = ip + ":" + port;
String base = "";
String downPath = "";
base = "http://" + localip + request.getContextPath();
try {
// 初始化
OSSClient ossClient = new OSSClient(fileOssEndpoint, fileOssKeyId,
fileOssKeySecret);
// 6改为自己的名称
String fileName = zipName + ".zip";
String tempFileName = zipName;
String realPath = "";
realPath = 文件下载地址;
File tempDir = new File(realPath);
// 创建临时文件
File zipFile = File.createTempFile(tempFileName, ".zip", tempDir);
String fileUrl = zipName + ".zip";
// String fileUrl = tempDir+
FileOutputStream f = new FileOutputStream(zipFile);
/**
* 作用是为任何OutputStream产生校验和 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型
* (Adler32(较快)和CRC32两种)
*/
CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
// 用于将数据压缩成Zip文件格式
ZipOutputStream zos = new ZipOutputStream(csum);
String[] keylist = key.split(",");
for (String ossfile : keylist) {
// 获取Object,返回结果为OSSObject对象
OSSObject ossObject = ossClient.getObject(fileOssBucketName, ossfile);
// 读去Object内容 返回
InputStream inputStream = ossObject.getObjectContent();
// 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名
zos.putNextEntry(new ZipEntry(ossfile.split("/")[1]));
int bytesRead = 0;
// 向压缩文件中输出数据
while ((bytesRead = inputStream.read()) != -1) {
zos.write(bytesRead);
}
inputStream.close();
zos.closeEntry(); // 当前文件写完,定位为写入下一条项目
}
zos.close();
String header = request.getHeader("User-Agent").toUpperCase();
if (header.contains("MSIE") || header.contains("TRIDENT")
|| header.contains("EDGE")) {
fileName = URLEncoder.encode(fileName, "utf-8");
fileName = fileName.replace("+", "%20"); // IE下载文件名空格变+号问题
} else {
fileName = new String(fileName.getBytes(), "ISO-8859-1");
}
ossClient.shutdown();
// 删除临时文件
// zipFile.delete();
downPath = base + "|" + zipFile.getPath();
} catch (Exception e) {
e.printStackTrace();
}
return downPath;
}