2021.4.27

下载功能

这里面很多我都没看懂,涉及浏览器相关的东西,但是改了改索性是能跑

PhotoDao dao = PhotoDaoFactory.getPhotoDao();
//创建dao层对象,和上面一样
String uuid = request.getParameter("uuid");
//还是获取uuid,同样可以用ssm的方法从前端获取
PhotoModel photo = dao.getSingleByUuid(uuid);
//调用方法,查找指定的对象
if(photo!=null){
//设置响应头--内容接收程序--浏览器看到这个响应头,就会把它认为的下载程序打开
//(如果识别迅雷那么就会自动打开迅雷,如果没有则会打开一个“文件另存为”的对话框)
response.setContentType("application/force-download");

String realName = photo.getRealName();
//把名称先拿出来
String agent = request.getHeader("User-Agent");
//获取用户使用的操作系统,cpu什么的一堆,具体我不知道原理


if(agent.indexOf("Mozilla")!=-1){//火狐浏览器
response.setHeader("Content-Disposition", "attachment;filename="+ new String(realName.getBytes("GB2312"),"ISO-8859-1"));
}else{
//解决中文乱码问题(只要用下面一句对文件名进行编码就行了)
realName = URLEncoder.encode(realName, "utf-8");
//使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
response.setHeader("Content-Disposition", "attachment;filename=""+realName+""");
//注意:“cttachment;”不能少,否则浏览器会直接在新窗口中打开
}
//此处是我的知识盲区。。。自行理解一下,不行照搬


}else{
//提示用户图片已经被删除
}

原文地址:https://www.cnblogs.com/buxiang-Christina/p/14909106.html