Angular前端和Spring后端文件下载不起作用或文件损坏
创始人
2024-10-29 02:00:40
0次
  1. 确保后端正确配置文件下载功能。以下示例是Spring MVC中的文件下载控制器:

@Controller @RequestMapping("/download") public class DownloadController {

@Autowired
private FileStorageService fileStorageService;

@GetMapping("/{fileName:.+}")
public ResponseEntity downloadFile(@PathVariable String fileName) {
    Resource resource = fileStorageService.loadFileAsResource(fileName);

    return ResponseEntity.ok()
            .contentType(MediaType.parseMediaType("application/octet-stream"))
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
            .body(resource);
}

}

  1. 在Angular中使用HttpClient对后端控制器进行HTTP GET请求。以下是一个使用Angular HttpClient进行文件下载的示例:

constructor(private http: HttpClient) { }

downloadFile() { const fileName = 'example.pdf'; this.http.get('/download/' + fileName, { responseType: 'blob' }) .subscribe(res => { const url = URL.createObjectURL(res); const a = document.createElement('a'); document.body.appendChild(a); a.setAttribute('style', 'display: none'); a.href = url; a.download = fileName; a.click(); window.URL.revokeObjectURL(url); a.remove(); // remove the element }, error => { console.log('Error downloading the file.'); }); }

  1. 确保文件类型和文件扩展名匹配。例如,在上面的示例中,我们将HTTP响应类型设置为“blob”。这将返回一个二进制流对象,而不是文本或Json对象。在响应结束时,我们将二进制流对象转换为URL,然后使用生成的URL创建新的“a”元素,将其附加到DOM树中,并模拟单击该元素以启动文件下载。注意,您还应该删除“a”元素并释放URL资源。

  2. 确保文件名不包含任何非法字符或路径分隔符。在我们的示例中,我们使用“fileName”参数来创建下载文件的新文件名。这种方法可以有效防止文件路径遍历(例如“/../”)攻击。

相关内容

热门资讯

玩家实测!欢乐茶馆辅助脚本软件... 玩家实测!欢乐茶馆辅助脚本软件,欢乐茶馆一直是有辅助关于攻略1、欢乐茶馆公共底牌简单,欢乐茶馆透视插...
实测发现!玩玩四川麻将辅助脚本... 实测发现!玩玩四川麻将辅助脚本软件,玩玩四川麻将其实存在有辅助曝光app1、很好的工具软件,可以解锁...
每日必备!中至乐平辅助器脚本软... 每日必备!中至乐平辅助器脚本软件,中至乐平切实有辅助器揭露攻略亲,关键说明,中至乐平透视脚本安卓赛季...
专业讨论!蜀州麻将一桃子开挂脚... 专业讨论!蜀州麻将一桃子开挂脚本软件,蜀州麻将一桃子真是是真的有开挂解迷神器1、蜀州麻将一桃子公共底...
盘点几款!决战卡五星开挂脚本软... 盘点几款!决战卡五星开挂脚本软件,决战卡五星果然是真的有开挂科普技巧1)决战卡五星辅助插件:进一步探...
一起来讨论!云月晋善麻将开挂脚... 一起来讨论!云月晋善麻将开挂脚本软件,云月晋善麻将真是存在有开挂教你app1、很好的工具软件,可以解...
热点讨论!66玩麻将开挂脚本软... 热点讨论!66玩麻将开挂脚本软件,66玩麻将真是是真的有开挂教你脚本1、下载好66玩麻将脚本下载之后...
如何分辨真伪!麻友圈2贵州捉鸡... 如何分辨真伪!麻友圈2贵州捉鸡开挂脚本软件,麻友圈2贵州捉鸡果然是真的有开挂开挂app麻友圈2贵州捉...
如何分辨真伪!华龙棋牌辅助脚本... 如何分辨真伪!华龙棋牌辅助脚本软件,华龙棋牌本来真的有辅助分享技巧华龙棋牌辅助器是一种具有地方特色的...
带你了解!九天揽月透视脚本软件... 带你了解!九天揽月透视脚本软件,九天揽月一贯是有透视解密脚本1、起透看视 九天揽月辅助软件价格2、随...