Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过rest从angular2光盘中获取excel文件_Excel_Rest_Angular - Fatal编程技术网

如何通过rest从angular2光盘中获取excel文件

如何通过rest从angular2光盘中获取excel文件,excel,rest,angular,Excel,Rest,Angular,我使用的是angular 2和Java背景,它们之间的通信是通过REST进行的。我要做的是在单击按钮时创建一些excel文件,然后在用户API中返回该文件 其余部分如下所示: @RequestMappingvalue=/some\u path/{someId},method=RequestMethod.GET,products=MediaType.APPLICATION\u OCTET\u STREAM\u VALUE 公共文件系统资源exportSomeData@PathVariable长so

我使用的是angular 2和Java背景,它们之间的通信是通过REST进行的。我要做的是在单击按钮时创建一些excel文件,然后在用户API中返回该文件

其余部分如下所示: @RequestMappingvalue=/some\u path/{someId},method=RequestMethod.GET,products=MediaType.APPLICATION\u OCTET\u STREAM\u VALUE 公共文件系统资源exportSomeData@PathVariable长someId,HttpServletResponse{ //…创建excel文件数据。。。 File File=新文件名; response.addHeaderFILE_名称、文件名; FileNameResource fsr=新FileNameResourcefile; 返回fsr; }

在剩余部分的角度返回中,调用工作正常: getFilepath:字符串{ 这个.authHTTP.get'some_path' .mapresponse=>{ 设blob=response['body']; 返回{ 数据:新Blob[Blob],{type:'application/octet stream'}, 文件名:response.headers.get'FILE\u NAME' } } .subscriberes=>saveAsres.data,res.filename }


问题是我得到了这个文件,它包含数据,但它丢失了它的元数据。在单元格中显示一些问号字符,而不是excel格式。有人知道问题出在哪里吗?

尝试将responseType设置为Blob并使用RC5 Blob响应类型:

getFile(path:String) {
this.autthHttp.get(`some_path', {responseType: ResponseContentType.Blob})
    .map((response) => {
        let blob = response.blob();
        return {
            data: new Blob([blob], {type: 'application/octet-stream'}), 
            filename: response.headers.get('FILE_NAME')
        }
    })
    .subscribe(res => saveAs(res.data, res.filename))
}

在RC5中,我试图更改let blob=response[''u body'];和data:new Blob[Blob],{type:'application/octet stream'},其中let Blob=response.Blob和data:Blob,但是我得到了一个异常,请求主体不是Blob或数组缓冲区。谢谢。我缺少部分{responseType:ResponseContentType.Blob}。现在它起作用了。