将大文件上传到 Amazon S3 会在两分钟后创建两个副本

Uploading large files to Amazon S3 creates two copies after two minutes

我正在尝试从用 NodeJS 编写的服务器将大文件(50 到 60 MB)上传到 amazon S3 存储桶。服务器从 ReactJS 前端接收文件。我遇到了相同文件的两个副本被上传到 S3 存储桶的问题(尽管时间戳相差两分钟)。 查看我存储桶中的屏幕截图

这是我在 expressJS/NodeJS 中写的 api :

app.post('/myAPI', (req, res) => {
  
  console.log("------------------------------- In builds API - post request -------------------------------");
  
    console.log(req.method);
    console.log("This device is Android");
    let File = req.files.file;

    //appending the date object to the file name
    let date = JSON.stringify(new Date()).replace(/\"/g, "").replace(/:/g, "-");
    let index = File.name.lastIndexOf(".");
    let newname = [File.name.slice(0, index), date, File.name.slice(index)].join('');
    newname = req.body.project + "/" + newname;
    
    let busboy = new Busboy({ headers: req.headers });
    
    //this event is fired when the data is successfully uploaded
    eventEmitter.on('data_uploaded', function() {
      res.end(`done !!!!!!!!!!!!!!!!!!`);
    });

    busboy.on('finish', function( ) {
      
      let s3bucket = new AWS.S3({
        accessKeyId: IAM_USER_KEY,
        secretAccessKey: IAM_USER_SECRET,
        Bucket: BUCKET_NAME
      });

      s3bucket.createBucket(function () {
        console.log("In create bucket method");
        var params = {
          Bucket: BUCKET_NAME,
          Key: newname,
          Body: File.data
        };
        s3bucket.upload(params, function (err, data) {
          if (err) {
            console.log('error in callback');
            console.log(err);
          }
          
          console.log(data);
          
          eventEmitter.emit('data_uploaded'); 
        });
      });

    });
    
    //piping the request to writable stream busboy
    req.pipe(busboy);
  }

});

这是我的控制台的样子

..一切两次.

我正在查看浏览器的网络选项卡,发送的请求只有一个..

尽管只收到一次响应,如下所示:

我做错了什么..请帮帮我! 提前一百万致谢。

(我用 this tutorial by Keith Weaver 写了这个 API)。

req 对象在默认超时 2 分钟后过期,这是创建新 req 对象和新 API 命中。

覆盖服务器实例上的超时键解决了我的问题:

让服务器 = app.listen(端口, () => { console.log(Started up at port ${port}); });

server.timeout = 600000; //6 lac 毫秒 = 10 分钟,默认为 2 分钟

module.exports = {应用};

感谢this answer by SomeKittens