在Angularjs中使用AWS API从S3代理生成Word文档无法打开“选择使您的文档可读的编码”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Angularjs中使用AWS API从S3代理生成Word文档无法打开“选择使您的文档可读的编码”相关的知识,希望对你有一定的参考价值。

我正在尝试使用AWS API(S3代理)和角度js从S3加载/保存文档。代码如下

  1. 响应类型标记为数组缓冲区,然后转换为带有UTF8的blob并键入“application / msword”(来自S3 API的已验证内容类型)
  2. 下载成功但是文件没有显示并且出现错误“选择使您的文档可读的编码”
  3. 尝试使用类型为application / pdf的pdf文档,pdf打开但没有显示数据。任何线索在这里是错的

   $scope.URL =  "https://jkq1yea3e5.execute-api.ap-south-1.amazonaws.com/Prod" + "/s3resources/"+"testfolder/"+ $scope.filename;
          $http.get($scope.URL, {responseType: "arraybuffer"}).
      success(function(data) {
        $scope.info = "Read '" + $scope.URL + "' with " + data.byteLength
        + " bytes in a variable of type '" + typeof(data) + "'";
       blob= new Blob([data], {type: $scope.type+";charset=utf-8"});
        var url = window.URL.createObjectURL(blob);
        var linkElement = document.createElement('a');
        linkElement.setAttribute('href', url);
        linkElement.setAttribute("download", $scope.filename);
        linkElement.click();

        FileSaver.saveAs(blob, $scope.filename,true);

答案

经过几个小时的努力,这对我有用。

为AWS API添加了二进制类型的application / msword

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-workflow.html

以上是关于在Angularjs中使用AWS API从S3代理生成Word文档无法打开“选择使您的文档可读的编码”的主要内容,如果未能解决你的问题,请参考以下文章

从(AngularJS)单页应用程序直接(并且简单!)AJAX 上传到 AWS S3

用于 S3 的 API 网关代理和子目录

AWS S3 代理使用方法

从托管在 S3 存储桶上的站点访问 AWS API 时出现 CORS 问题 [关闭]

在 AWS Lambda 函数中从 S3 获取对象并发送到 Api Gateway

如何将 S3 用作静态网页和 EC2 作为 REST API 一起使用? (AWS)