0
点赞
收藏
分享

微信扫一扫

前端get请求接收后端传来的二进制文件流blob实现下载功能,解决下载文件打不开问题


解决方法:
        前端在请求下载文件接口时,要设置responseType为blob。
前端代码:

export function download(url,) {
return request({
url: url + '?' + qs.stringify(params, { indices: false }),
method: 'get',
responseType: 'blob'
})
}

后端下载文件接口:

  1. 控制器:

@ApiOperation(value = "下载模板" , notes = " \n author:LiFang ")
@GetMapping("/downloadTemplate")
public Result<Void> downloadTemplate(HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException {
File file = ResourceUtils.getFile("classpath:template/excel/学生信息模板.xlsx");
FileUtils.downloadFile(request, response, file, false);
return Result.success();
}

  1. 下载文件工具类
    FileUtils.java

public class FileUtils extends cn.hutool.core.io.FileUtil {
public static void downloadFile(HttpServletRequest request, HttpServletResponse response, File file,
boolean deleteOnExit) {
response.setCharacterEncoding(request.getCharacterEncoding());
response.setContentType("application/octet-stream");
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
IOUtils.copy(fis, response.getOutputStream());
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
if (deleteOnExit) {
file.deleteOnExit();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}


举报

相关推荐

0 条评论