1

ユーザーが表示画像をアップロードできるようにするDjango Webアプリケーションがあります。一部のユーザーはこの表示画像を見ることができますが、すべてのユーザーがこの画像にアクセスできるわけではありません。そうは言っても、開発中は、自分のマシンにローカルに保存していました。私の設定ファイルには、

MEDIA_ROOT = '/home/myProfile/Documents/thisFolder/uPhotosFolder'
MEDIA_URL = '/media/'

Django は、ユーザーがアップロードしたすべての表示画像を、私のマシンにあるメディア rood (uPhotosFolder) に保存します。

そうは言っても、私はアプリを展開しました(または少なくとも展開しようとしています)、設定ファイルにMEDIA_ROOTとMEDIA_URLを残したとき

MEDIA_ROOT = '/home/myProfile/Documents/thisFolder/uPhotosFolder'
MEDIA_URL = '/media/'

画像をアップロードしようとすると、アクセスが拒否されたと表示されました。どうやら EC2 インスタンス (Amazon Web Services を使用) にアクセスして、

'/home/myProfile/Documents/thisFolder/uPhotosFolder'

ディレクトリに移動し、表示画像の保存を開始します。

私の質問は、これは個人ユーザーがアップロードした画像をサーバーに保存するための正しい/最良の方法ですか? それとも、これにもS3を使用する必要がありますか? (私が読んだ限りでは、S3 上の画像はクラウドに保存され、URL から誰でもアクセスできます) 今の状況で S3 を使用する方法はありますか?

4

1 に答える 1

0

イメージをフォルダー内の EC2 インスタンスに保存するか、S3 ストレージに保存するかは、ファイルのプライバシーとは関係ありません。

MEDIA_ROOT は、メディア フォルダの場所を定義します。MEDIA_URL は、メディアを提供するときに形成される URL を定義します。

ここで、デフォルトのファイル システム ストレージを使用する場合、ファイルを MEDIA_ROOT に保存することになります。設定ファイルで追加の構成を行うことで、ストレージを S3 に変更できます。(ドキュメントはこちら)

URL へのアクセスを制限することで、ユーザー単位でファイルを保護できるようになりました。このメディア URL は、nginx を使用してファイルを提供するときに X-Accell-Redirect ヘッダーを使用して保護できます (例:ここ)。メディア ファイルを提供するために S3 ストレージを使用する場合 (実稼働環境でより望ましい) - S3 ストレージは、メディアを取得するためにクライアントに渡すことができるメディアの保護された URL を取得する機能を提供します。これらの URL は、期間限定でアクセスできます。

于 2014-10-07T10:41:20.337 に答える