0

web2py の専門家。私が達成しようとしているタスクは次のとおりです。

-私のサイトを閲覧している人が、フォームを介して私のサイトにファイルをアップロードすることを許可します (crud.create() によって実装されます) -訪問者は、ファイルをアップロードするためにアカウントを作成したりログインしたりする必要はありません -ユーザーは提供する必要がありますファイルをアップロードするためのメールアドレス

-基本的に、ユーザーがファイルをアップロードした後、ファイルはエスクロー/リンボに保持され、検証/検証メールがユーザーに送信されます

-ユーザーが検証メールのリンクをクリックすると、ファイルがページに投稿され、ダウンロードできるように公開されます

これを行う最善の方法は何ですか?ありがとう!

4

2 に答える 2

0

アップロード情報を含むテーブルに、「validation_key」という新しい文字列フィールドを追加します。ファイルがアップロードされたら、GUID またはかなり長い英数字の文字列をファイルに挿入します。このキーを電子メールのリンクの一部として送信します。ユーザーがリンクをクリックすると、キーが検索され、見つかった場合は、データベース内の一致する 'validation_key' が null に設定されます。null validation_key はアップロードが検証されたことを示し、そのファイルのダウンロードを許可できます。

于 2012-10-09T22:01:28.467 に答える
0

最も明白なのは、セッションを使用することです。アップロードされたファイルの名前をいくつかのセッション変数に保持します。

auth.verify_email(onaccept=...) を使用する

ユーザーの電子メールが確認されると、コードが呼び出されます - 次に、ファイルとユーザーを関連付けることができます: session.variable および auth.user_id からのファイル名

ファイルのテーブルに user.email のフィールドを含めるよりも、ユーザーが別のコンプや別のセッションからの登録を考えて確認する時間を持てるようにしたい場合:

db.define_table('gifts', 
Field('im', 'upload', requires=IS_EMPTY_OR(IS_IMAGE(maxsize=(200, 200))), autodelete=True, uploadfolder='static/gifts'),
Field('email', requires=IS_EMAIL()),
Field('notes','text', default='', writable=True),
Field('t0','datetime',default=request.now, readable=False, writable=False),
Field('t', 'datetime', default=request.now, update=request.now, writable=False),
Field('rating', 'integer', default=0, writable=False, readable=False),
Field('hidden', 'boolean', default=True, writable=False, readable=True),
)

次に、onaccept のコールバック関数に一致クエリを含めます。 db(db.gifts.email==auth.user.email).update(hidden=False)

ユーザーに適切なフィードバックを提供する前に、非表示のファイルを選択することをお勧めします (確認の瞬間までにいくつかのファイルをアップロードした可能性があります)。

幸運を

于 2012-10-08T22:05:35.083 に答える