RuoYi框架实现文件下载实现
本篇文章仅针对ruoyi模板的下载文件功能,对其进行修改前端注意事项:.不要用ajax传参,可以使用 location.href的方式,使用ajax调用Controller不会开启下载文件弹窗,但是会正常下载文件,控制台也不会报错,下载好的文件会在浏览器中的network中的最新一条请求中的response中找到二进制文件数据filename均为/profile/upload开头前端代码实现:Js
·
本篇文章仅针对ruoyi模板的下载文件功能,对其进行修改
前端
注意事项:.不要用ajax传参,可以使用 location.href的方式,使用ajax调用Controller不会开启下载文件弹窗,但是会正常下载文件,控制台也不会报错,下载好的文件会在浏览器中的network中的最新一条请求中的response中找到二进制文件数据
filename均为/profile/upload开头
前端代码实现:
Js实现:
function downLoads(evidenceUrl,evidenceName) {
window.location.href=ctx +"common/download/resource?resource="+ evidenceUrl + "&name=" + evidenceName;
}
后端代码实现:
/**
* 本地资源通用下载
*/
@GetMapping("/common/download/resource")
public void resourceDownload(String resource, String name, HttpServletRequest request, HttpServletResponse response) {
try {
if (!FileUtils.checkAllowDownload(resource)) {
throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
}
// 本地资源路径
String localPath = RuoYiConfig.getProfile();
// 数据库资源地址
String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
// 下载名称
String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
if (!name.equals("") && name != null) {
FileUtils.setAttachmentResponseHeader(response, name);
} else {
FileUtils.setAttachmentResponseHeader(response, downloadName);
}
FileUtils.writeBytes(downloadPath, response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
log.error("下载文件失败", e);
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)