@SneakyThrows
public void downloadFile(String ossPath, HttpServletResponse response, HttpServletRequest request) {
String endpoint = "";
String accessKeyId = "";
String accessKeySecret = "";
String bucketName = "";
BufferedInputStream input;
OutputStream outputStream;
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
response.setCharacterEncoding("utf-8");
response.setContentType("application/msword");
String[] split = ossPath.split("/");
String fileName = split[split.length - 1];
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
} else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else if (request.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
try {
OSSObject ossObject = ossClient.getObject(bucketName, ossPath);
input = new BufferedInputStream(ossObject.getObjectContent());
byte[] buffBytes = new byte[1024];
outputStream = response.getOutputStream();
int read;
while ((read = input.read(buffBytes)) != -1) {
outputStream.write(buffBytes, 0, read);
}
outputStream.flush();
ossObject.close();
} catch (Exception oe) {
oe.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
阿里云OSS文件流下载
于 2023-03-02 10:59:13 首次发布