Web2py 上传静态文件名不同到数据库
Web2py upload filename different in Static to database
我有一个带有字段的 SQLFORM.factory 表单:
字段('photo', 'upload', uploadfolder=os.path.join(request.folder,'static/images/students/')),
上传成功后,它会将文件名插入数据库并将图像文件保存在 static/images/students/
db.student.insert(..., 照片 = request.vars.photo, ...)
但是当我查看数据库时,文件名存储为:
student.photo.9d313a71112989fe.706f7274726169742e706e67.png
但在 static/images/students/ 中它存储为:
student.photo.a8c742a692b9f60c.706f7274726169742e706e67.png
这意味着当我尝试在另一个视图中加载图像时,使用存储在数据库中的名称,找不到图像。
任何人都可以帮助我将数据库名称存储为静态文件名,以便我可以加载刚刚上传的图像吗?
谢谢大家
您可能将文件存储了两次——一次是通过调用 SQLFORM.factory
在静态文件夹中,一次是通过调用 db.student.insert
在上传文件夹(默认上传位置)中.每次,文件名都包含一个唯一的随机组件,存储在数据库中的特定文件名是调用 db.student.insert
生成的文件名,而不是 SQLFORM.factory
.
生成的文件名
更好的方法是使用 SQLFORM(db.student)
而不是 SQLFORM.factory
生成表单,除非您需要添加额外的字段或合并多个数据库表中的字段。如果必须使用 SQLFORM.factory
,则插入 form.vars.photo
(将包含 SQLFORM.factory
生成的文件名)而不是 request.vars.photo
(包含实际文件对象并将触发新的文件创建):
db.student.insert(..., photo=form.vars.photo)
我有一个带有字段的 SQLFORM.factory 表单: 字段('photo', 'upload', uploadfolder=os.path.join(request.folder,'static/images/students/')),
上传成功后,它会将文件名插入数据库并将图像文件保存在 static/images/students/ db.student.insert(..., 照片 = request.vars.photo, ...)
但是当我查看数据库时,文件名存储为: student.photo.9d313a71112989fe.706f7274726169742e706e67.png
但在 static/images/students/ 中它存储为: student.photo.a8c742a692b9f60c.706f7274726169742e706e67.png
这意味着当我尝试在另一个视图中加载图像时,使用存储在数据库中的名称,找不到图像。
任何人都可以帮助我将数据库名称存储为静态文件名,以便我可以加载刚刚上传的图像吗?
谢谢大家
您可能将文件存储了两次——一次是通过调用 SQLFORM.factory
在静态文件夹中,一次是通过调用 db.student.insert
在上传文件夹(默认上传位置)中.每次,文件名都包含一个唯一的随机组件,存储在数据库中的特定文件名是调用 db.student.insert
生成的文件名,而不是 SQLFORM.factory
.
更好的方法是使用 SQLFORM(db.student)
而不是 SQLFORM.factory
生成表单,除非您需要添加额外的字段或合并多个数据库表中的字段。如果必须使用 SQLFORM.factory
,则插入 form.vars.photo
(将包含 SQLFORM.factory
生成的文件名)而不是 request.vars.photo
(包含实际文件对象并将触发新的文件创建):
db.student.insert(..., photo=form.vars.photo)