使用multipart/form-data上传图片时无法获取文件名的问题咨询
解决方案
当表单指定enctype="multipart/form-data"时,符合HTTP协议的处理规则是:普通表单字段会被解析到request.form,文件类型字段的所有内容只会被封装到request.files中,不会出现在request.form里,因此通过request.form.get("itemimg")获取不到值是正常现象。
你已经从request.files中拿到了文件对象,直接读取该对象的filename属性即可得到上传的文件名,不需要从request.form中取值,参考修改后的代码:
from werkzeug.utils import secure_filename import os # 路由内的业务逻辑 f = request.files['itemimg'] # 生成安全文件名,避免路径注入、特殊字符问题 safe_filename = secure_filename(f.filename) # 保存文件到指定目录 f.save(os.path.join(app.config['UPLOAD_FOLDER'], safe_filename)) # 直接将文件名赋值给imgsrc存入数据库即可 imgsrc = safe_filename # 后续执行SQLite3插入逻辑
注意事项:
- 建议存入数据库的文件名和实际保存到磁盘的文件名保持一致,因此优先使用经过
secure_filename处理后的文件名,避免后续访问文件时出现路径匹配错误 - 如果需要保留用户上传的原始文件名,可以额外将
f.filename存入独立的数据库字段,不影响文件的实际存储和访问
内容的提问来源于stack exchange,提问作者mmaarouf2025
相关产品推荐
相关产品推荐

