【问题标题】:angular http get, download file from spring mvc server角度http get,从spring mvc服务器下载文件
【发布时间】:2015-07-29 02:32:15
【问题描述】:

我正在使用 apache commons IOUtils 复制方法将文件从服务器发送到 angularjs。 这是我的控制器:

    @RequestMapping(value="/download", method = RequestMethod.GET)
    public void downloadFile(HttpServletResponse response) {

        response.setContentType("image/jpg");

        try {
            File file = new File(filePath);

            InputStream inputStream = new FileInputStream(file);
            IOUtils.copy(inputStream, response.getOutputStream());

        } catch (...) {
        .......
    }

在 angularJs 控制器中:

$http({

            method: 'GET',
            url: '.../download',
            headers: {'Content-Type': 'image/jpg'}

        })

        .success(function(data, status){

            console.log(data);
            var blob = new Blob([data], {type: 'image/jpg'});
            saveAs(blob, 'test.jpg');
        })

        .error(function(data, status){
            ....
        })

当我在客户端下载文件时,我无法读取它。当我用记事本++打开它时,我发现特殊字符被修改了。

例如,当我用 Notpad++ 打开原始文件时,我得到这样的一行: òŽsCJVäl·²HWƒ…;¹(òÈ$ÓÒ«Á‘{S€~9ÎsŠÒogk

同一行,当我用记事本++打开下载的文件时: ��sCJV�l��HW��;�(��$�Ӂҫ��{S�~9�s��ogk

但是,当我将下载链接 (localhost/myApplication/download) 直接放在浏览器中时,它可以正常工作。文件应该是加密的,下载文件需要授权,所以我必须使用 angular HTTP get。

任何帮助将不胜感激。

【问题讨论】:

  • 在读取文件时使用正确的编码(可能 UTF-8 可以工作)?
  • 尝试使用二进制编辑器查看内容
  • 我用 Hex Editor Neo 检查了内容。不是同一个二进制内容。
  • 您是否看到删除了任何特定字符?
  • 所有特殊字符都被修改成这个:

标签: angularjs spring-mvc


【解决方案1】:

我必须将 responseType 添加到 HTTP 获取请求:

$http({

        method: 'GET',
        url: '.../download',
        responseType: 'arraybuffer'
    })

    .success(function(data, status){

        console.log(data);
        var blob = new Blob([data], {type: 'image/jpg'});
        saveAs(blob, 'test.jpg');
    })

    .error(function(data, status){
        ....
    })

现在它正在工作。

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2011-06-03
    相关资源
    最近更新 更多