Web2Py - 通过电子邮件验证上传的文件

时间:2012-10-08 18:23:09

标签: python web2py

web2py专家。我正在努力完成的任务如下:

- 允许浏览我网站的人通过表单将文件上传到我的网站(通过crud.create()实现)    - 访客不需要建立帐户或登录上传文件    - 用户需要提供电子邮件地址才能上传文件

- 基本上,在用户上传文件后,该文件将保存在托管/限制中,并向用户发送验证/验证电子邮件

- 用户点击验证邮件中的链接,该文件将发布到该页面,并可公开下载

这样做的最佳方法是什么?谢谢!

2 个答案:

答案 0 :(得分:0)

最明显的是使用会话。 将上传文件的名称保存在某个会话变量中。

使用auth.verify_email(onaccept = ...)

当验证用户的电子邮件时,将调用您的代码 - 然后您可以将文件和用户:文件名与session.variable和auth.user_id相关联 还设置了任何权限

如果您希望用户有时间思考并确认来自另一个comp和另一个会话的注册,请在表格中包含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)

最好在选择任何隐藏文件之前向用户提供适当的反馈(可能是他已经上传了几个文件到确认时刻)

祝你好运

答案 1 :(得分:0)

在包含上传信息的表中,添加一个名为“validation_key”的新字符串字段。上载文件时,在其中插入GUID或相当长的字母数字字符串。将此密钥作为电子邮件中链接的一部分发送。当用户单击链接时,搜索密钥,如果找到,则将数据库中匹配的“validation_key”设置为null。 null validation_key表示经过验证的上传,您可以允许下载该文件。