Nodejs - 使用预签名 url 从 s3 存储桶 React 下载文件

Mar*_*uin 3 amazon-s3 node.js reactjs

我正在尝试创建一个 onClick 按钮以使用 pre-signet url 从 S3 存储桶下载文件。当我收到我的网址时,问题就出现了。我想要一个自动重定向或某种类型的。换句话说,在取回我的签名网址后,如何才能下载下载文件呢?

这是我的文档列表

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

还原动作

Redux操作调用我的nodejs路由 api路由nodejs

请求预签名的 url,然后将其发送到我的 redux reducer。

现在在我的前端页面中,我得到了链接,但我想要自动重定向来开始文件下载。 组件的一部分

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

Mar*_*uin 5

我通过 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();
    });
Run Code Online (Sandbox Code Playgroud)