在<head>中引入Bootstrap相关js和css:
<link href="/static/CSS/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="/static/JS/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="/static/JS/bootstrap.min.js"></script>
再引入Bootstrap-fileinput:
<link rel="stylesheet" type="text/css" media="screen" href="/static/CSS/fileinput.min.css">
<script type="text/javascript" src="/static/JS/fileinput.min.js" charset="UTF-8"></script>
<script src="/static/JS/locales/fileinput_locale_zh.js" charset="utf-8"></script><!--汉化-->
使用文件上传的input如下:
//以二进制的格式上传表单数据,文件上传必须
<form method="POST" role="form" id="S1" enctype="multipart/form-data" >
//mutiple是支持多文件上传,name='image'为了使后台获得此表单值,request.file.getList('image')
<input type="file" class="file" multiple="" name="image" data-overwrite-initial="false" data-min-file-count="1">
<h5><small>仅支持jpe、png、gif格式图片上传</small></h5>
在body中设置Bootsttrap-fileinput相关参数(对应input的class="file"):
<script type="text/javascript">
$('.file').fileinput({
language: 'zh', //设置语言
allowedFileExtensions : ['jpg', 'png','gif'],//接收的文件后缀,
maxFileCount: 100,
showUpload: true, //是否显示上传按钮
showCaption: true,//是否显示标题
browseClass: "btn btn-primary", //按钮样式
});
</script>
后台处理:
多文件上传:
if request.files.getlist('image'):
for i in request.files.getlist('image'):
i.save('url')#url带文件名,如/home/1.jpe
单文件上传( 把上传表单的mutiple属性去掉):
request.files.get('image')
方法二:
也可在flask项目中的form.py中定义上传表单(一个form中存在两个上传表单可用这个方法避免出错):
file = FileField('filename')
前端代码:
{{ form.comfile(class='file') }}//括号内传入相关样式
后台:
if form.file.data:
form.file.data.save(url)
疑问:此方法只能单文件上传,怎么实现多文件上传?
疑问:在jinja2中form中的button不生效?只能用input?