Node.js-使用预签名的URL从s3存储桶中下载文件

时间:2019-02-06 02:16:26

标签: node.js reactjs amazon-s3

我正在尝试创建一个onClick按钮,以使用预签名网址从S3存储桶下载文件。当我收到我的网址时,问题就来了。我想要一种自动重定向或某种方式。换句话说,在取回已签名的URL后,如何才能对下载文件进行午餐?

this is my document list

onClick事件位于“下载”按钮上。

redux action

Redux动作调用我的Node.js路由 api route nodejs

询问预签名的网址,然后将其发送到我的redux reducer。

现在在我的前端页面中,我获得了链接,但是我想自动重定向以开始文件下载。 Part of Component

希望我的第一篇文章不太混乱。

1 个答案:

答案 0 :(得分:0)

我通过redux动作解决了我的问题。一键式调用我的操作,操作者将返回我的预签名URL,然后自动单击链接。当我将其上传到S3时,会触发具有原始文件名的下载事件。

export const downDoc = (docId) => async dispatch => {
    
    const res = await axios({ url: 'myApiCall', method: 'GET', responseType: 'blob' })
    .then((response) => {
      console.log(response)
      const url = window.URL.createObjectURL(new Blob([response.data]));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', `${docId.originalName}`);
      document.body.appendChild(link);
      link.click();
    });