web2py 专家。我要完成的任务如下:
- 允许浏览我网站的人通过表单将文件上传到我的网站(通过 crud.create() 实现) - 访问者无需建立帐户或登录即可上传文件 - 用户需要提供用于上传文件的电子邮件地址
- 基本上,用户上传文件后,该文件被保存在 escrow/limbo 中,并向用户发送验证/验证电子邮件
-一旦用户单击验证电子邮件中的链接,文件就会发布到页面上,并公开可供下载
这样做的最佳方法是什么?谢谢!
在包含上传信息的表中,添加一个名为“validation_key”的新字符串字段。上传文件时,在其中插入 GUID 或相当长的字母数字字符串。将此密钥作为电子邮件中链接的一部分发送。当用户单击链接时,搜索密钥,如果找到,将数据库中匹配的“validation_key”设置为空。空的validation_key 表示已验证上传,您可以允许下载该文件。
最明显的是使用会话。将上传文件的名称保存在某个会话变量中。
使用 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)
在向用户提供适当的反馈之前最好选择任何隐藏文件(可能是他上传了几个文件直到确认时刻)
祝你好运