春季启动angularjs文件下载

时间:2018-12-01 21:34:32

标签: angularjs html5 spring-boot download filesystems

我正在尝试使用带有以下代码的springboot和angularjs从服务器下载文件。我正在损坏/无效的文件。

  

Springboot / Java:

@RequestMapping(value = "/download", method = RequestMethod.GET)
    public @ResponseBody ResponseEntity<Resource> getDocument(@RequestParam String filePath) {
    String fileName = filePath.substring(filePath.lastIndexOf("\\") + 1);
    File file = new File(filePath);
    Path path = Paths.get(file.getAbsolutePath());

    MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();
    String contentType = fileTypeMap.getContentType(file.getName());

    ByteArrayResource resource = null;
    if (contentType == null) {
        contentType = "application/octet-stream";
    }
    try {
        resource = new ByteArrayResource(Files.readAllBytes(path));
    } catch (IOException e) {
        e.printStackTrace();
    }

    return ResponseEntity.ok().header("Content-Disposition", "attachment; filename=" + fileName).contentLength(file.length()).contentType(MediaType.parseMediaType(contentType)).body(resource);

    }
  

客户端/ JS代码:

self.downloadFile = function(url){

        factory.download(url).then(function(response){

            let file = new File([ response.data],
                    response.config.params.fileName,response.config.params.filePath.length), {
                        type : "*/*"
                    });
            saveAs(file);
        },function(error){
            unBlock();
        });

    }

正在下载带有适当扩展名,文件名和文件大小的文件。但是在打开时,我收到无法打开文件或文本损坏的提示。

请为解决此问题的任何其他方法或解决方案提供帮助。

0 个答案:

没有答案