0

RailsにAJAXファイルアップロード機能としてのWebアプリケーションがあります。ファイルはリモート サーバー (AWS S3) にアップロードされます。temp/私の現在の戦略は、ユーザーがフォームを送信するまでファイルを (元の名前で) ディレクトリにアップロードしてから、ファイルの名前を最終的な名前に変更することです。

しかし問題は、複数のユーザーが同じ名前の 2 つのファイルを同時にアップロードしようとすると、一方が他方を上書きしてしまうことです。

これを解決するために私が考えていた戦略は、アップロード ページが読み込まれたときにランダムな SHA1 を生成し、ローカルのテーブルに保存して一意であることを確認し、一時ファイルの名前が変更されたときにそれらを削除することでした。

このアプローチに問題はありますか?

この問題を解決するための良い戦略は何ですか?

4

1 に答える 1

0

問題の 1 つは、何もアップロードせずにページから移動すると、ハッシュがデータベースに残り、最終的に混乱することです。この一時的なものをデータベースに保存することは避けます。

一時ファイルに名前を付ける独自の方法を考え出すのではなく、ruby tempfile ライブラリを使用してみませんか?


元々、ファイルを ruby​​ サーバーにアップロードして、自分で s3 にアップロードしていると思っていました。ユーザーがファイルを直接アップロードしている場合、一時ファイルは役に立ちません。一時ファイルに一意の名前が必要な場合は、UUID ジェネレーターが役立つ場合があります。分散設定でも重複を生成しないように設計されたRuby UUID ジェネレーター gemがあります。これらでファイルに名前を付ける場合、データベースに何も保存する必要はありません。

于 2012-09-12T00:35:53.733 に答える