Restangular下载文件不会触发浏览器下载

时间:2018-06-01 08:36:44

标签: express amazon-s3 pipeline restangular

我有一个案例,我希望通过NodeJS / express后端将文件从AWS S3传输到我的JS / Restangular客户端。下载工作正常,但看起来好像文件在下载时在某处缓冲,直到文件完全缓冲后才会显示浏览器下载界面,并确定文件已完成。 (见图)

The process is never displayed, just the complete result

如果文件ID为10 KB或1 GB,则只有在完成文件列在底部之前的时间量没有区别。

如果没有浏览器下载界面,则不会通知用户发生任何事情,并且可能会多次单击该文件,特别是如果文件很大(理论上文件大小没有限制,并且可能超过1 GB)一块)。

这是我的客户端下载代码:

return new Promise((resolve, reject) => {
  let rq = RESTNGULAR.get(this)
    .one('documents/download')
    .withHttpConfig({ responseType: 'blob' });

  rq.param = params;
  rq.post()
    .then(resolve, reject);
});

这是我的(稍微减少)后端代码。

const AWS = require('aws-sdk');

...

res.setHeader('Content-disposition', 'attachment; filename=' + name);
res.setHeader('Content-type', mimeType);
res.setHeader('Content-length', fileSize);

const params = {
  Bucket: bucketID,
  Key: key
};

s3.getObject(params).createReadStream().then((readStream) => {
  readStream.pipe(res);
}).catch((err) => {
  err.status && res.status(err.status).send(err.body);
  err.status || res.status(500).send(err);
});

为什么浏览器中没有显示进度?我错过了什么?客户端,后端或两者都有什么?一段时间以来,我一直在反对这一点。

0 个答案:

没有答案