- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用以下代码的表格,其中包括两列:名称和文件名。我的问题是,当我上传文件时,它的文件名存储在文件名列中。我该怎么做呢?现在,当我上传文件时,“无”被放置在文件名中。我只能上传文件或在数据库中输入名称,我认为问题是 enctype="multipart/form-data"。 从 flask_wtf 导入 FlaskForm
from flask_wtf.file import FileField
from wtforms import StringField,SelectField,IntegerField
from wtforms.ext.sqlalchemy.fields import QuerySelectField
from wtforms.validators import DataRequired, Email, Length
class ContactForm(FlaskForm):
name = IntegerField('name', validators=[Length(min=-1, max=100, message='You cannot have more than 100 characters')])
filename = FileField()
这是我的 app.py:
def new_contact():
'''
Create new contact
'''
form = ContactForm()
if form.validate_on_submit():
return render_template('web/new_contact.html',form = form)
f = form.filename.data
f.save(os.path.join("./static/upload/", f.filename))
return redirect(url_for('new_contact'))
print(f)
my_contact = Contact()
form.populate_obj(my_contact)
db.session.add(my_contact)
try:
db.session.commit()
# User info
flash('Contact created correctly', 'success')
return redirect(url_for('contacts'))
except:
db.session.rollback()
flash('Error generating contact.', 'danger')
return render_template('web/new_contact.html', form=form)
最佳答案
根据您提供的有限信息,我会尝试实现您想要的功能。
您的 ContactForm
可以保持这样:
class ContactForm(FlaskForm):
name = IntegerField('File Name', validators=[Length(min=-1, max=100, message='You cannot have more than 100 characters')])
filename = FileField()
然后你将表单对象传递给模板,从自定义的 flask 路由,让我们调用它来解释,联系路由:
@app.route('/contact')
def contact():
contact_form = ContactForm()
return render_template('contact.html'
contact_form = contact_form)
在你的模板中,我在这个例子中调用 contact.html
,你呈现你的表单:
<form action="" method="post" enctype="multipart/form-data">
{{ contact_form.csrf_token }}
{{ contact_form.name }}
{{ contact_form.filename}}
<input type="submit"/>
</form>
在这种形式中,我们希望使用 action=""
在同一路由上发布数据,即 联系路由。所以在这个例子中,我们还应该验证 Flask 应用程序的 contact()
方法中的数据。但是您可能想知道 enctype="multipart/form-data"
是什么?
搜索它是什么的第一个结果给了我们结果:
The enctype attribute specifies how the form-data should be encoded when submitting it to the server. Note: The enctype attribute can be used only if method="post".
对于multipart/form-data
:
No characters are encoded. This value is required when you are using forms that have a file upload control.
最后,我们像这样更新 flask 应用联系方式:
@app.route('/contact')
def contact():
contact_form = ContactForm()
if form.validate_on_submit():
f = contact_form.filename.data
name = contact_form.name.data
f.save(os.path.join("./static/contacts/", name))
redirect(url_for('contact'))
return render_template('contact.html'
contact_form = contact_form)
我们已经成功地从表单中收集了数据,并将文件静态保存在联系人文件夹中,名称来自表单。或许我们还可以使用 werkzeug.utils
中的 secure_filename
。
关于python - 使用 FileField wtforms 上传文件时将文件名存储在列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342446/
我正在使用 Django 来建立一个网站,我使用两个 FileField 一个供用户上传文档,另一个系统将把文档保存到它的备份中。My Model def file_path_dir(instance
我正在用 django 实现一个应用程序,它有一个带有 FileField 的模型: class Slideshow(models.Model): name = models.CharFiel
我有一个包含 FileField 的模型如下 class Employer(models.Model): logo = models.FileField(storage=FileSys
我觉得不得不问这个问题有点愚蠢……但我似乎找不到任何地方的记录。 如果我有 Model与 FileField , 我怎么能塞一个上传的FILE成FileField ? 例如,我想做这样的事情: cla
我一直在挠头 FileField。 FileField 是否需要单独的过程? 虽然我的网址被保存了..但我的文件没有上传......我做错了什么? 这是我的models.py ... class Op
给定一个带有名为 number 的必填字段的模型和一个 ClearableFileInput FileField 调用 upload_file : class ExampleModel(models.
我需要为 FileField 对象保存文件,该对象的名称和内容不是来自表单(而是来 self 的代码)。怎么办? 我需要这样的东西: field = FileField() ... save_unde
我的 media/logo/ 文件夹中存储了一个图像,我想将其从我的模型保存到模型的 FileField 中看法。这是我尝试过的方法,但遇到编码错误,并且在尝试保存文件后文件已损坏。 UnicodeD
我需要为 FileField 对象保存文件,该对象的名称和内容不是来自表单(而是来 self 的代码)。怎么办? 我需要这样的东西: field = FileField() ... save_unde
我的 media/logo/ 文件夹中存储了一个图像,我想将其从我的模型保存到模型的 FileField 中看法。这是我尝试过的方法,但遇到编码错误,并且在尝试保存文件后文件已损坏。 UnicodeD
我有类似的东西: MEDIA_ROOT = '/home/httpd/foo/media/' MEDIA_URL = 'http://www.example.org/media/' (……) file
我在我的项目中实现了一个 FileField 模型。我可以成功上传 svg 文件并将它们保存到所需位置。 在我的项目中,我大量使用用户上传的图像 (JPG),它们保存到正确的位置,我可以毫无问题地在我
在我的应用程序中上传文件时遇到问题。用户提交报告并可以添加附件(通过外键关系)。我已经显示了内联表单,如果我将其留空,它会正常工作,但是当我尝试上传文件然后提交表单时,出现 500 错误。基础报告已生
如果我正确阅读了文档,那么 Django 中的 FileField 不知道文件的 content_type:https://docs.djangoproject.com/en/2.1/ref/mode
是否可以动态地为 forms.FileField() 赋予初始值? 最佳答案 我不确定,如果这就是你想要的,但是…… 显然,您不能为文件输入设置初始数据(这意味着您将文件发送给用户)。 Django
我正在尝试在模板中调用 FileField 时检索绝对路径(以 http://开头)。 我怎样才能做到这一点? IE:{{fl.uploadedfile}} -> 返回相对路径,如 media/upl
我正在尝试使用 FileField 存储文件,但文件目标的路径大于 100 个字符。如何增加允许的字符数?我试过 max_length=255 但没有用。 谢谢。 编辑:添加模型 class File
我正在尝试构建一个应用程序以使用 Flask 和 WTForms 的 FileField 表单字段将文件上传到 Web 服务器。该帖子正在成功通过,但我很好奇为什么 form.validate_on_
在现有表单中,我使用 FileField 附加不同类型的文件 .txt、.pdf、.png、.jpg 等 并且工作正常,但现在我需要该字段来接受多个文件,因此我使用属性 multiple 作为输入来接
如何获取 FileField 的链接?我尝试了url字段,但它给出了文件路径: In [7]: myobject.myfilefield.path Out[7]: u'/home/xxxx/media
我是一名优秀的程序员,十分优秀!