如何为存储在 Amazon S3 中的每个图像分配默认目录?

How to assign default directory for every image stored in Amazon S3?

用户选择的每张图片都将存储在 Amazon S3 中 这是我的代码

  key: function ( file ) {
    var user = Meteor.users.findOne( this.userId );
    return user.emails[0].address + "/screenshots" + "/" + file.name;
  }

根据我的代码,图像将存储在用户的电子邮件目录中,然后是屏幕截图文件夹,然后是文件名。 问题是如果用户想存储两个同名的图像。最后一张会覆盖第一张

我试过这个解决方案

  key: function ( file ) {
    var today = new Date();
    var user = Meteor.users.findOne( this.userId );
    return user.emails[0].address + "/screenshots" + "/" + today + file.name;
  }

它没有用,因为当前日期有空格,所以我无法稍后在客户端加载图像,因为有空格。

有什么方法可以让每张图片都具有唯一的名称吗?没有空格?

您可以为每一个生成一个随机的十六进制字符串:

key: function ( file ) {
    var unique = Random.hexString(16);;
    var user = Meteor.users.findOne( this.userId );
    return user.emails[0].address + "/screenshots" + "/" + unique + file.name;
}

Random 应该是您在创建 Meteor 项目时获得的默认包集的一部分。