blob显示为bytestring(angular + express)

时间:2015-08-31 03:01:10

标签: javascript angularjs node.js express

我正在尝试从后端Node.js / Express服务器中提取文件,然后在角度前端显示它们。我尝试了不同的方法,但仍然卡住,前端的数据显示为字节串,但显示为Base64字符串没有帮助(它只显示了Base64字符串)。

我认为这是因为我没有正确设置窗口属性来显示文件。

我的快递代码:

router.get('/api/v1/getupload/:filename', function(req,res){
    res.sendFile(__dirname + '/uploads/' + req.params.filename);
});

我的角色服务代码:

(managedatafactory将调用的结果返回给Express)

//get uploaded file
$scope.getUploadFile = function(file) {
    // data is link to pdf
    managedataFactory.getUploadFile(file, {responseType:'arraybuffer'}).success(function(f){
        var blob = new Blob([f]);
        var fileURL = $window.URL.createObjectURL(blob);
        $scope.content = $sce.trustAsResourceUrl(fileURL);
        var w = $window;
        w.open($scope.content);
    });
}

HTML包含ng-click与正确文件名的调用。

这是对后端调用的结果(新打开的窗口显示几乎相同):

`�PNG

���
IHDR����������    �����sRGB@�}����    pHYs�������+���tEXtSoftware�Microsoft Office�5q����IDATx����T������>���J�@HB�����Bp���� etcetcetc`

结果可以是pdf或图像,所以我必须同时满足这两个要求。任何帮助都会非常感激,因为我现在已经坚持这个问题一段时间了,我开始失去一些头发。

1 个答案:

答案 0 :(得分:1)

最后,我用一个简单的get替换了角柱,它解决了所有问题。