【问题标题】:MERN and Amazon-s3 for file uploadMERN 和 Amazon-s3 用于文件上传
【发布时间】:2020-10-23 20:30:04
【问题描述】:

如何使用节点将文件发布到 Amazon S3 并做出反应并将其保存到 mongoDB 的路径。与猫鼬和强大。

【问题讨论】:

    标签: amazon-s3 mongoose mern formidable


    【解决方案1】:
    private async storeFile(file: { buffer: Buffer, fileId: string }): Promise<string> {
        try {
          const awsConfig = new AWS.Config(storageConfig);
          const s3 = new AWS.S3(awsConfig);
          let storageLink = undefined;
          fs.readFile(file.buffer, (err, data) => {
            if (err) {
              throw err;
            }
            const params = {
              Bucket:storageConfig.s3Bucket,
              Key: `${storageConfig.s3Prefix}${file.fileId}`,
              Body: data,
            };
        
            s3.upload(params, (s3Err: Error, s3Data: AWS.S3.ManagedUpload.SendData) => {
              if (s3Err) {
                throw s3Err;
              }
              storageLink = s3Data.Location;
            });
          });
        
          return storageLink;
        
        } catch (error) {
          throw error;
        }
    }
    

    在您要调用此函数的服务文件中,使用集合中的记录进行更新

    const storageLink = this.storeFile({ buffer, fileId });
     const file = await file.updateOne({ _id: fileId }, {
        status: fileStatus.UPLOADED, // just a flag 
        fileId: storageLink,
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2011-11-10
      • 2012-12-16
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多