首页 > 解决方案 > iphone下载上的S3签名URL重定向失败

问题描述

我开发了一个带有 Node.js 后端的 Angular 2 应用程序。我正在使用 aws-sdk 来存储应用程序中的文件。应用程序中有一个功能,用户可以下载已上传到应用程序(并存储在 s3 上)的 pdf。本质上,应用程序从 s3 请求特定对象的签名 URL,如下面的代码块所示。

var params = {
            Bucket: projectid,
            Key: docName,
            VersionId: versionid,
            ResponseContentDisposition: 'attachment; filename ="' + docName+ '_' + versionid + '.pdf"'

        };
        var url = {
            link: s3.getSignedUrl('getObject', params)
        }
        res.status(200).send(url);

这个 url 返回到前端,然后 angular 在新的浏览器窗口中打开签名的 url,如下面的代码行所示。

        window.open(url.link.toString());

这在台式机和安卓手机上运行良好。当我尝试在 iPhone 上打开它时,它会打开一个新选项卡,显示一个文件图标,然后显示“下载失败”。然而,浏览器中的链接是正确的,并且可以在上述任何其他设备上运行。

我需要让它在所有设备上工作,任何人都可以建议一种不同的方式通过 iPhone 友好的 Angular 前端下载文件吗?

标签: iosnode.jsamazon-web-servicesamazon-s3angular2-services

解决方案


推荐阅读