admin管理员组文章数量:1565351
因为数据库的改变,将文件图片等以二进制存在mongodb中。需要使用则通过浏览器访问进行下载。
//result是通过数据接口访问取得图片的byte[]数据:
byte[] result = null;
result = mongoService.selectData(collectionName, queryMap);
取得一个文件名
public String getFileName(String collectionName){
String suffix = "";
if(collectionName.contains("png")){
suffix = ".png";
}else if(collectionName.contains("jpg")){
suffix = ".jpg";
}else if(collectionName.contains("doc")){
suffix = ".doc";
}else if(collectionName.contains("docx")){
suffix = ".docx";
}else if(collectionName.contains("excel")){
suffix = ".xls";
}else if(collectionName.contains("bmp")){
suffix = ".bmp";
}else{
suffix = ".txt";
}
//DateTime只是一个工具类
DateTime dt = DateTime.now();
String name = dt.toDateTimeString().replace(" ", "_");
//随机数
Random r = new Random();
int i = r.nextInt(100);
String fileName = name + i + suffix;
return fileName;
}
根据得到的byte[]下载文件,新手,对io流的掌握不得要领,虽然简单,依旧花了点时间刷了一阵子资料,难过,还得恶补一下才行。关于响应的一些设置,参考这位前辈的:https://blog.csdn/luman1991/article/details/53423305
//此处需要设置ISO8859-1,application/octet-stream为未知文件类型时使用
response.setContentType("application/octet-stream;charset=ISO8859-1");
BufferedOutputStream output = null;
try {
output = new BufferedOutputStream(response.getOutputStream());
String fileNameDown = new String(fileName.getBytes(), "ISO8859-1");
//fileNameDown上面得到的文件名
response.setHeader("Content-Disposition", "attachment;filename=" +
fileNameDown);
output.write(result);
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
然后就可以在浏览器中下载了(图片下载以测试,其他类型文件暂未测试)。
版权声明:本文标题:读取数据库中的二进制byte[]数据并通过浏览器下载图片 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726114415a1055948.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论