从AWS显示用户的个人资料图片

我完全不熟悉AWS,我想了解一些关键概念在开始构build之前是如何工作的。 我发现本教程直接将图像上传到节点JS中的AWS:

https://devcenter.heroku.com/articles/s3-upload-node#uploading-directly-to-s3

在我的webapp中,我使用的是MongoDB,每个用户(用户模式)都能够更改他们的个人资料图片。 在高层次上,我一直在想用户select一个新的图片并点击保存,我会按照上面的步骤直接上传新的图像到AWS的“桶”。

那么我将如何将其呈现在用户的个人资料页面上? 我是否需要在AWS端使用数据库(并跳过我的应用程序的mongodb部分),将每个用户与个人资料图片相关联? 我理解“保存到AWS”部分,但是不清楚如何以与用户关联的方式来检索/呈现映像(保存到AWS后)。 这是我的mongoose用户架构:

'use strict'; var crypto = require('crypto'); var bcrypt = require('bcryptjs'); var mongoose = require('mongoose'); var recipeSchema = require('./recipe.js').schema; //need the objectID, see: https://gist.github.com/fwielstra/1025038 var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId; var userSchema = new Schema({ email: { type: String }, password: String, resetPasswordToken: String, resetPasswordExpires: Date, //image: String ---> replacing this url with AWS picture: ObjectId, name: String, facebook: { id: String, token: String, pictures: String }, emailSubscription: Boolean, recipeBox: [{ id: ObjectId, done: Boolean }] }); var User = module.exports = mongoose.model('User', userSchema); 

您将在将图像与用户关联的数据库中保存logging。 您可以使用任何数据库,MongoDB或DynamoDB或MySQL或其他任何您想使用的数据库。 这里没有什么特别的事情要求您在AWS上使用一些特殊的数据库types来存储S3上的映像位置。

然后,您可以configurationS3将其作为静态网站提供服务。 如果要显示图像,只需使用图像的S3 URL即可。

编辑回答评论中的问题:

你应该阅读你链接的Heroku教程。 看这部分:

您可能希望为该对象指定另一个自定义名称,而不是使用该文件已命名的名称,这对于防止S3存储桶中的意外覆盖很有用。 例如,此名称可能与用户帐户的ID有关。

这就是你要控制存储在S3上的文件的名字的地方,可能通过使用用户ID作为名字。 在同一块代码中,您可以使用用户的configuration文件映像的位置来更新数据库。